docker 部署的nginx 刷新后未跟随端口,跳转到了nginx 监听的80端口

问题

刷新或者在地址栏 去掉 / 后访问,nginx 报 301 并且跳转到 端口为 nginx 监听的端口

原因

nginx 在找不到文件之后,由于 absolute_redirect 项打开并且 port 默认是他监听的 80端口,301重定向到了 host:80/url 处, 即 Location: host:80/url
nuxt dist 文件目录部署的项目中,nginx 未将端口信息传到服务器中,让服务器进行解析,导致服务器未正确 redirect 端口号

解决方案

  1. 添加 absolute_redirect off; 将重定向地址去掉 host 和port 部分,只留下 url部分

配置如下:

server {
    listen 80 default_server;
    listen [::]:80 default_server;
    proxy_set_header Host $host:$server_port;

    index index.html ;
    port_in_redirect off;
    error_log  /var/log/nginx/error.log;
    access_log /var/log/nginx/access.log;
    location / {
        root /var/www/html/dist;
        index index.html index.htm;
        try_files $uri $uri/ @router;
    }
    
    location @router {
        rewrite ^.*$ /index.html last;
    }
}

在这里插入图片描述

在修改后使用nginx -s reload命令(可能需要root权限)加载修改后的配置即可。在使用该命令之前也可使用nginx -t命令检查配置正确性。

参考资料

[1] https://www.ghosind.com/2020/08/14/react-404-after-reload
[2] https://segmentfault.com/a/1190000020521708

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值