nginx 反向代理时丢失端口的解决方案

今天,配置nginx反向代理时遇到一个问题,当设置nginx监听80端口时转发请求没有问题。但一旦设置为监听其他端口,就一直跳转不正常;如,访问欢迎页面时应该是重定向到登录页面,在这个重定向的过程中端口丢失了。

这里给出一个简短的解决方案,修改nginx的配置文件。

一、配置文件

  1. # the 90 port
  2. server {
  3. listen 90;
  4. server_name zxy1994.cn;
  5. proxy_set_header X-Forwarded-Host $host;
  6. proxy_set_header X-Forwarded-Server $host;
  7. proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
  8. proxy_set_header Host $host:$server_port; #这里是重点,这样配置才不会丢失端口
  9. location / {
  10. proxy_pass http://127.0.0.1:9001;
  11. }
  12. location = /50x.html {
  13. root html;
  14. }
  15. }

二、产生原因

nginx没有正确的把端口信息传送到后端,没能正确的配置nginx,下面这行是关键

proxy_set_header Host $host:$server_port; 这一行是关键。

时间: 2024-08-03 21:54:36

nginx 反向代理时丢失端口的解决方案的相关文章

nginx 反向代理时丢失端口的解决方案(转)

今天,配置nginx反向代理时遇到一个问题,当设置nginx监听80端口时转发请求没有问题.但一旦设置为监听其他端口,就一直跳转不正常:如,访问欢迎页面时应该是重定向到登录页面,在这个重定向的过程中端口丢失了. 这里给出一个简短的解决方案,修改nginx的配置文件. 一.配置文件 # the 90 port server { listen 90; server_name zxy1994.cn; proxy_set_header X-Forwarded-Host $host; proxy_set_

使用nginx反向代理时,如何正确获取到用户的真实ip

在记录日志的的时候,获取用户的信息,比如用户的ip,浏览器等等信息是十分重要的. 但是在使用nginx反向代理的时候,可能经过转发无法获取到用户的真实的ip, 在此情况下需要配置nginx,让其在转发的时候在header 带上用户的真实的ip. 举个例子: server { listen 80; server_name xxx.lenny.net; root D:\soft\nginx-1.11.4\html; index index.php index.html index.htm; add_

nginx反向代理时配置访问密码

在有些情况下,我们需要对服务器上的某些资源进行限流或者禁止陌生人访问,我们可以通过nginx配置来对url添加访问密码. 效果如下 nginx 开启访问验证在 nginx 下,提供了 ngx_http_auth_basic_module 模块实现让用户只有输入正确的用户名密码才允许访问web内容.默认情况下,nginx 已经安装了该模块.所以整体的一个过程就是先用第三方工具( htpasswd,或者使用 openssl)设置用户名.密码(其中密码已经加过密),然后保存到文件中,接着在 nginx

Nginx反向代理时tomcat日志获取真实IP

对于nginx+tomcat这种架构,如果后端tomcat配置保持默认,那么tomcat的访问日志里,记录的就是前端nginx的IP地址,而不是真实的访问IP.因此,需要对nginx.tomcat做如下配置: 1.nginx配置增加如下 proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

docker部署pgadmin4并通过nginx反向代理

1.通过docker直接拉取pgadmin4容器,并运行 docker pull dpage/pgadmin4 docker run -p 5050:80 -e "[email protected]" -e "PGADMIN_DEFAULT_PASSWORD=abc12345678" -d dpage/pgadmin4 2.nginx反向代理配置如下 使用80端口访问配置如下 listen 80; server_name _; location / { proxy_

nginx反向代理配置

nginx这块了解得不深,这里只简单记录下配置文件,后续再做补充. 一.反向代理的配置 server { listen 80; #配置监听的端口 server_name zxy1994.com; #访问域名 proxy_set_header X-Forwarded-Host $host; proxy_set_header X-Forwarded-Server $host; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; p

相同Ip 不同端口配置Nginx反向代理Apache

相同Ip  不同端口 配置Nginx反向代理Apache(就是Nginx跳转到Apache) 在linux 一经搭建好环境  先后安装了Nginx  和Apache 由于 默认端口都是:80 一般客户请求的服务器端口默认为80  所以Nginx作为静态页端口设置:80 Apache设置端口为:8080(在httpd.conf  文件中修改Listen:8080) 如何跳转: 在nginx.conf中 添加 location / { proxy_pass http://202.85.224.166

Nginx反向代理关于端口的问题

Nginx反向代理关于端口的问题 http://www.cnblogs.com/likehua/p/4056625.html Nginx默认反向后的端口为80,因此存在被代理后的端口为80的问题,这就导致访问出错.主要原因在Nginx的配置文件的host配置时没有设置响应的端口. 相关配置文件如下: 1 2 3 4 proxy_pass http://ime-server/ime-server; proxy_set_header Host $host; proxy_set_header X-Re

nginx反向代理有关端口的问题

今天在做nginx反向代理的时候,出现了一个问题:我们外网访问端口设置的是8088,但是因为外网访问默认端口是80,所以当页面发生重定向的时候,会出现页面访问不到的问题,. 尝试很多办法之后,终于得到了解决,特意分享出来,希望可以帮到有需要的朋友. server { listen 内网端口; server_name 域名a; if ( $content_type ~ xwork2 ){ return 403; } if ( $content_type ~ struts2 ){ return 40