修改Nginx的网站根目录

修改Nginx的网站根目录


Nginx的默认网站文件保存在nginxhtml目录下,由于我开发时都把项目放在自己的workspace里,所以准备更改网站根目录,更改方法为修改nginx.conf配置文件的root指令,root指令可以放在httpserverlocation块中,我选择把root指令放在server块中,如下所示:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
http {
include mime.types;
default_type application/octet-stream;
#access_log logs/access.log main;
sendfile on;
#tcp_nopush on;
keepalive_timeout 65;
#gzip on;
server {
listen 80;
server_name localhost;
//配置root指令
root /Users/zhongwu/Documents/workspace/web;
}
}

配置完成后,执行sudo ./nginx -s reload命令,Nginx支持动态更新配置信息。

访问一下网页测一下,发现返回状态码403,既请求被服务器拒绝了,查看Nginx的error.log后,发现如下log,既Nginx没有打开该html文件的权限,所以得解决权限的问题。

1
2016/09/24 17:51:39 [error] 16397#0: *15 open() "/Users/zhongwu/Documents/workspace/web/lounge.html" failed (13: Permission denied), client: 127.0.0.1, server: localhost, request: "GET /lounge.html HTTP/1.1", host: "127.0.0.1"

首先我们来了解Nginx的用户权限,Nginx的master进程是root权限,而worker进程默认是nobody用户,用户组同为nobody,由于请求的处理是由worker进程处理的,所以,需要修改worker的用户,将其修改为我的workspace目录的用户,方法为直接修改Nginx配置文件,在nginx.conf配置文件中添加user zhongwu staff;//zhongwu是我的workspace用户,staff是用户组
再访问以下,成功。

解决127.0.0.1能访问,而localhost不能访问


项目出现127.0.0.1能访问,而localhost却访问不了的问题,定位,应该是dns域名解析的问题,查看/etc/hosts文件,发现有一条记录为:::1 localhost::1ipv6的表示方法,将其改为ipv4的,既将::1替换为127.0.0.1,因为Nginx默认并没有开启监听ipv6地址。

再次访问,localhost就能访问了。