Front-end

Mac安装nginx小结

Mac下配置nginx

安装nginx

brew install nginx
在终端中执行上面的指令,即可安装nginx的最新稳定版。
(以下所有教程只针对brew安装的nginx,其他版本未经测试)

查看安装的nginx版本

执行nginx -v即可查看当前nginx版本

以管理员权限启动nginx

sudo nginx
如果启动成功,此时可以在浏览器地址栏输入”localhost:8080”,可以打开默认页面。
效果如下:
nginx配置成功效果图

配置启动目录

目前nginx监听的端口是8080,存放代码的路径是”/usr/local/var/www”,可以在nginx的配置文件中看到,所以现在就要修改nginx配置文件中的代码路径,来部署我们自己的代码。
如果通过命令行来修改,执行
vim /usr/local/etc/nginx/nginx.conf

打开nginx.conf文件,找到

1
2
3
4
5
6
7
8
9
10
11
server {
listen 8080;
server_name localhost;
#access_log logs/host.access.log main;
location / {
root html;
index index.html index.htm;
}
}

其中listen 后面是端口号,server_name是匹配的url地址,location中的root是代码的根目录,index是启动项的名称。
nginx的一大优势是可以同时监听多个端口,所以我们可以在下面再启动一个server,定义如下

1
2
3
4
5
6
7
8
9
10
11
server {
listen 80;
server_name localhost;
#access_log logs/host.access.log main;
location / {
root /Users/user/www;
index index.html index.htm;
}
}

此时在地址栏中输入”localhost:80”即可访问对应的目录。

可能出现的问题

报错”nginx: [emerg] bind() to 0.0.0.0:8080 failed (48: Address already in use)”

这种情况是端口已经被占用,可能是之前启动了 apache服务,已经占用了80端口,把listen的端口换一个就可以

报错”403 Forbidden”

这种情况是nginx的user项是nobody,无权访问当前的目录,网上有两种解决方法,比较简单的是直接修改user为root或者当前的用户名,user配置在nginx.conf的第一行,将其修改为#user root

然后在终端里执行sudo nginx -s reload重新启动nginx。

第二种方法是为当前目录添加权限,使任何人都可以访问,在终端里依次执行以下命令。

1
2
3
4
5
6
7
chmod o+x User/user
chmod o+x User/user/Documents
...
chmod o+x User/user/.../html
chmod o+x User/user/.../html/js
chmod o+x User/user/.../html/css
chmod o+x User/user/.../html/img
这样可以为各级目录添加权限,但很麻烦,建议使用第一种方法。

其他常用命令

1
2
3
4
5
6
sudo nginx #启动nginx
sudo nginx -s reload #修改配置后重新加载生效
sudo nginx -s reopen #重新打开日志文件
sudo nginx -s stop #快速停止nginx
sudo nginx -s quit #完整有序的停止nginx
sudo nginx -t #测试当前配置文件是否正确

参考文章