开发者社区> 问答> 正文

tomcat 交给 nginx处理后,页面去掉端口号,该如何设置?

#默认请求
    location /
    {      
      proxy_pass http://localhost:8081;

    }

我页面都交给 nginx转发给 tomcat,
这样能访问网页http://192.168.8.3/lessmore/net
但里面的超链接全是http://192.168.8.3:8081/lessmore/123.html; 全带8081,点击链接后,又直接访问tomcat了,怎么去掉8081
准备提问,在网上搜了下,找到了方法,如下:
(1)网站页面中直接读取了服务器ip和端口号。
(2)在网站服务端不能正确获取到port.或者做重定向的时候地址总是丢掉端口(port)。
最简单的解决方案,修改Nginx的配置文件:

    server {
        listen       80;
        server_name  www.xxx.cn;

        server_name_in_redirect off;
        proxy_set_header Host $host:$server_port;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header REMOTE-HOST $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

    location / {
         proxy_pass http://***********:8080/;
        }
    }

如上才是正确的配置nginx。其中的proxy_set_header Host $host:$server_port; 这一行非常关键。

展开
收起
落地花开啦 2016-06-03 16:48:29 4447 0
1 条回答
写回答
取消 提交回答
  • 喜欢技术,喜欢努力的人
    location ~ \.(php|php5|php4)$ {
              proxy_pass   http://127.0.0.1:81;
              proxy_redirect off;
               proxy_set_header Host $host;
              proxy_set_header X-Real-IP $remote_addr;
              proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
              #proxy_hide_header Content-Type;
              index index.php;
    
    }

    这样是没问题的,如果按照我这个出问题,不妨升级Nginx
    其实我这个隐含server_port为80

    2019-07-17 19:26:52
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
《Nginx 代理系统常用手册》 立即下载
CentOS Nginx PHP JAVA 多语言镜像使用手 立即下载
CentOS Nginx PHP JAVA多语言镜像使用手册 立即下载