1、报错原因
原因是因为web单页面开发模式,只有一个index.html入口,其他路径是前端路由去跳转的,nginx没有对应这个路径,当然就是404了。
2、一般nginx监听配置
server {
listen 9005;
server_name 192.168.0.5;
#charset koi8-r;
#access_log logs/host.access.log main;
location / {
root D:/hospitalPage/dist;
index index.html index.htm;
#limit_rate 1280k; #限制速度
client_max_body_size 100M;
allow all;
autoindex on;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
add_header 'Access-Control-Allow-Headers' 'Content-Type';
add_header 'Access-Control-Allow-Methods' 'GET';
add_header 'Access-Control-Allow-Methods' 'POST';
add_header 'Access-Control-Allow-Methods' 'DELETE';
add_header 'Access-Control-Allow-Methods' 'PUT';
add_header 'Access-Control-Allow-Credentials' 'true';
add_header 'Access-Control-Allow-Origin' '*';
proxy_connect_timeout 600s;
proxy_read_timeout 600s;
proxy_send_timeout 600s;
access_log off;
break;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
3、解决404配置
在配置中加上try_files,意思跟翻译差不多,“尝试读取文件”。
try_files $uri $uri/ /index.html;修改配置如下
1、如果是在根目录则配置如下
location / {
root /;
index index.html;
try_files $uri $uri/ /index.html
# 下面配置省略,同第二步
}
2.如果是有特定目录
location /xx/xx/ {
root /;
index index.html;
try_files $uri $uri/ /xx/xx/index.html
# 下面配置省略,同第二步
}
例如:
location /payfor/ {
root /home/web;
index index.html;
try_files $uri $uri/ /payfor/index.html;
# 下面配置省略,同第二步
}