nginx反代问题请教?

我的 http8008 端口起了一个哪吒面板的服务,目前用 http://域名.com:8008 访问服务正常 我现在想用 https 反代 我希望的结果是当我访问 https://域名.com/nezha/的时候,可以正常的访问哪吒服务 我的 nginx 配置如下

location ^~ /nezha/
        {
         proxy_redirect off;
         proxy_read_timeout 1200s;
     proxy_pass http://127.0.0.1:8008/;
         proxy_set_header X-Real-IP $remote_addr;
         proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
         proxy_set_header Host $host;
         proxy_set_header Upgrade-Insecure-Requests 1;
         proxy_set_header X-Forwarded-Proto https;
         
        }
        location ~* /(static)/.*\.(gif|jpg|jpeg|bmp|png|js|css)$
                {
                proxy_pass http://127.0.0.1:8008;#访问路径及端口
                }

        location /ws {        
        proxy_redirect off;
        proxy_pass http://127.0.0.1:8008;      # 转发
        proxy_set_header Host $host;
        proxy_set_header X-Real_IP $remote_addr;
        proxy_set_header X-Forwarded-For $remote_addr:$remote_port;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;   # 升级协议头 websocket
        proxy_set_header Connection upgrade;
    }

我遇到的问题是,目前首页可以正常使用,但当我点击哪吒面板的其他功能时,页面的链接是 https://域名.com/service

此时 nginx 就代理失败了,页面无法正常访问,请问怎么做才能让我在点击哪吒面板其他功能时,页面的地址是 https://域名.com/nezha/service 呢

阅读 2.5k
2 个回答
新手上路,请多包涵

proxy_pass http://127.0.0.1:8008/;后面的/删掉,proxy_pass http://127.0.0.1:8008;

根本原因是你的url配置中有 /nezha这个path,访问这个path的时候正确转发到了哪吒的server上(首页可用),但是返回的页面中的url相关资源中并没有 /nezha这个path,也就是说哪吒的server并不知道你有 /nezha 这个path,所以页面的相关资源还是指向了根路径,这个需要哪吒的服务server有配置path的能力,有的项目叫 root_url

如:grafna https://grafana.com/docs/graf...

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题