启动nginx
nginx安装目录 -c nginx配置文件
nginx安装目录在linux上可以用whereis nginx来查找,mac上不行。
mac上可以直接执行 nginx -c nginx配置文件路径。通常配置文件路径 /usr/local/etc/nginx/nginx.conf
示例
nginx -c /usr/local/etc/nginx/nginx.conf
注意有时候直接执行nginx会报错,提示命令不存在。
这时候用whereis nginx
找到nignx安装目录,然后写完整的nginx路径即可,后面再加-c /usr/local/etc/nginx/nginx.conf。但是这并非长久之计,应该要把该nginx加入环境变量,具体方法可百度之。
关闭nginx
如果nginx已经开启了,再次执行nginx -c 命令时,会报错。此时应先关闭nginx。
先找到nginx相应端口的进程,比如8086
lsof -i:8086
会列出被占用8086端口的进程,找到对应的pid,
kill <pid>
再重新启动nginx,回到第一个问题。
nginx -c /usr/local/etc/nginx/nginx.conf
重启nginx
修改conf配置后,需要重启nginx。
nginx -s reload
nginx http请求转发
情景:
前后端分离的情况下,假如前端在http://localhost:4000
,而后端接口在http://localhost:3000
。如果前端直接调后端接口,会存在跨域问题。这时候可以通过nginx将前端的接口转发到后端接口上,可以完美地解决跨域问题。通常需要把前端的接口增加一个层级,比如api
,以便在nginx上可以较好地管理不同请求的转发。
示例:
如果将http://localhost:4000/api/identity.json
接口转发到http://localhost:30000/user/identity.json
,写法如下:
location /api/ {
proxy_pass http://localhost:3000/user/;
}
注意:
- lcoation后面的大括号不能有
;
- proxy_pass末尾要有
;