由于最近遇到vue项目history打包,nginx部署后刷新404的问题,所以撸了一遍nginx的文档
下面是解决的方案
原因
由于history模式/xxx
刷新后,nginx内找不到对应的路径,所以才报404错误
解决方案便是把这个路径重新定位到我们的index.html,然后交给路由去处理
代码实现
所有的/xxx定位到/的路由,然后try_files定位到@rewrites处理
location / {
try_files $uri $uri/ @rewrites;
}
location @rewrites {
rewrite ^(.+)$ /index.html last;
}
复制代码
以上
http转https
当nginx需要把外部的http请求全部转成https时,便需要以下配置
注:由于nginx里面没有 &
|
等逻辑符,所以需要以一个变量来处理
当发现协议头是http时,并且host不是localhost时(方便本地开发),即跳转https
set $redirectFlag '0';
# if shceme equals http
if ($scheme = 'http') {
set $redirectFlag '${redirectFlag}0';
}
# if host equals localhost then do not redirect
if ($host = 'localhost') {
set $redirectFlag '0';
}
# if redirect-flag equals double 0, then redirect to https
if ($redirectFlag = '00') {
return 301 https://$host$request_uri;
}
复制代码
以上