配置好nginx代理之后,访问报错:如图:
nginx看日志报以下错误:linux服务器 nginx日志路径 默认在 /var/log/nginx/ 目录下:
[crit] 16876#16876: *686 stat() “/home/projects/web/frontend/dist/index.html” failed (13: Permission denied)
可以这样排查:使用命令查看 master 和worker进程 用户是否一致:
命令:ps aux | grep nginx
如图所示:master 进程为 root worker 进程是www-data 是不一致的,没有权限的错误,也是因为这个造成了。
这个时候就需要更改配置文件:nginx.conf ,linux服务器该文件默认位置:在/etc/nginx/下:
如图:将user 改为 root
重新加载配置文件,使刚刚改的配置文件 生效: nginx -s reload
再次使用命令:ps aux | grep nginx
我们发现 master 和 worker 用户就一样了。
再次访问页面:就ok了。
问题2:nginx配置好之后,操作页面跳转都没问题,如果你在某个业务页面点击浏览器的刷新按钮,或者F5刷新,同样的路径就会包报404。 解决方法就是,在location 里加上下边红框里的配置。这样刷新就不会报404了。
我的server配置如下:
文本内容如下:
server {
listen 9800;
location / {
index index.html index.htm;
root /home/projects/web/frontend/dist/;
try_files $uri /index.html;
}
location /dev-api/ {
proxy_pass http://后台服务ip:后台服务端口/;
proxy_redirect off;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $host;
}
}
其他nginx 常用命令:
检查配置文件是否语法正确:
nginx -t
为nginx 指定一个配置文件:
nginx -c </path/config> #为Nginx指定一个配置文件,来代替缺省值conf/nginx.conf
修改完配置文件,使其生效:
nginx -s reload
停止nginx
nginx -s stop