Nginx确实简单易用,性能又好,可以作为服务神器。自己搭一个Nginx服务器也很容易,本文将描述三个注意事项,希望大家不要再踩类似的坑。
(1) Nginx可以同时开启多个服务,无需每次必须一个服务,添加方式就是并列server来使用,举例如下:
server { listen 9528; server_name 10.64.72.99; location / { proxy_pass http://localhost:3001; proxy_http_version 1.1; } error_page 500 502 503 504 /50x.html; location = /50x.html { root /usr/share/nginx/html; } } server { listen 9527; server_name 10.64.72.99; location / { root /var/www/userserver; index index.html; } }
分析例子:
在nginx.conf中,配置文件可以加入多个server{}内容。上例中,首先配置了一个反向代理,代理nodejs启动的http://localhost:3001服务;然后又配置了一个静态页面的服务,静态资源放于/var/www/userserver/中。
在上线的nginx.conf中,往往把每个server{}内容单独写为一个文件,然后在nginx.conf中通过include导入你想要的服务,如:
http{ ***** #若干行内容 include /etc/nginx/default.conf; #导入server include /etc/nginx/conf.d/*.conf; #导入server }
其中default.conf、conf.d/*.conf是若干个需要开启的服务。其中注意各个文件的权限设置等等。
(2)仍沿用上面的例子,server中的server_name使用了ip。该位置应当使用真正的域名,如,www.tryme.com 等等。但是在局域网中,若ip为内部使用ip,即伪ip,服务是不能被DNS解析的。所以在使用局域网路由内ip段时,即使在这里使用了www.tryme.com 服务域名,也不会被响应到。
故请先注册域名,再在nginx配置使用该域名,才能有效服务。
(3)权限问题。仍沿用上面的例子,在第二个server中root被注册为 /var/www/userserver/路径下。博主曾直接在工作路径下把工程路径配置在nginx中,测试时网页返回了403 forbidden。理由是nginx的启动于root权限,但是博主的/home/username/workplace/projectname/中间文件的每一级的路径均为username权限并且属于username用户组,即使只改变了projectname的文件用户所属,也仍然不能够被访问到。因此project再输出product后,应把product中的资源内容全部放入root权限且root用户组下的工作路径,如推荐/var/www/中。
另外一提,project资源放入/root/即root用户的工作目录下亦不会被访问,故请严格放到合适的路径下。
最后,再开启nginx服务时,记得保证 /var/www/userserver/下各资源的执行权限
$ chmod +x /var/www/userserver/*
(4) 最后,改变nginx配置后,(平滑)重启nginx。