需求
在阿里云申请了两个域名,一个已经给了fullmoon,是flask 的习作,给夫人写写小文章用。另一个计划给自己的静态博客kukumalu.cc使用,主要专注于内容。
只有一台服务器,原先计划是通过不同的端口访问。搜索许久,Nginx vhost更简便、更适合分开管理。
方案
- 在
/etc/nginx
新建文件夹vhost
mkdir vhost
- 链接,将下面两份文件链接或复制到vhost
静态博客配置
server {
listen 80;
server_name kukumalu.cc www.kukumalu.cc;
charset utf-8;
root /home/app/negativedearc.github.io/output;
location / {
index index.html;
}
}
动态博客配置
server {
listen 80;
server_name cxwloves.cc www.cxwloves.cc;
charset utf-8;
location / {
proxy_pass http://localhost:5000;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $host;
proxy_pass_header Set-Cookies;
proxy_temp_path /tmp/nginx;
}
}
-
修改nginx主conf,在
/ect/nginx/nginx.conf
的virtual host configs加入一行include /etc/nginx/vhost/*.conf;
-
重启nginx 服务生效,在之前可能要关掉原有服务
ps -ef|grep nginx
kill -s 9 xxxxx
sudo service nginx restart
遭遇错误
然而重启服务测试网站却遭遇了错唔net::ERR_CONTENT_LENGTH_MISMATCH
,查看/var/log/nginx/error.log
发现
2017/10/18 23:23:51 [crit] 6443#6443: *628 open() "/var/lib/nginx/proxy/6/02/0000000026" failed (13: Permission denied) while reading upstream, client: 49.75.65.34, server: cxwloves.cc, request: "GET /cxw/static/highlight.js/highlight.min.js HTTP/1.1", upstream: "http://127.0.1.1:5000/cxw/static/highlight.js/highlight.min.js", host: "cxwloves.cc", referrer: "http://cxwloves.cc/cxw/blog/article/59f71dde-e2a4-11e6-b834-f4066974556c"
推测可能是修改了nginx配置后,用户没有权限写入缓存文件夹导致错误。解决方法如下
- 新建一个tmp文件夹
- 赋予nginx配置文件中的用户权限
- 在配置中更新tmp目录
root@dearc:/# cd /tmp/
root@dearc:/tmp# mkdir nginx
root@dearc:/tmp# chown www-data nginx/
root@dearc:/tmp# ll nginx/
total 8
drwxr-xr-x 2 www-data root 4096 Oct 19 11:38 ./
drwxrwxrwt 10 root root 4096 Oct 19 13:42 ../
最后不要忘记在服务配置中写入缓存目录
server {
...
location / {
...
proxy_temp_path /tmp/nginx;
}
}