nginx做非80端口转发

nginx可以很方便的配置成反向代理服务器

 

server {
listen 80;
server_name localhost;

location / {
    proxy_pass http://147.16.24.175:9500 ;
    proxy_set_header Host $host:80;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header Via "nginx";

}
}

 

但是如果nginx的监听端口不是默认的80端口,改为其他端口如81端口。

后端服务器中request.getServerPort()无法获得正确的端口,返回的仍然是80;

在response.sendRedirect()时,客户端可能无法获得正确的重定向url。

正确的配置方法为

在 $host之后加上端口号,如$host:81

server {
        listen       83;
        server_name  localhost;

        location / {
         proxy_pass 
http://147.16.24.175:9500;
         proxy_set_header   Host             $host:83;
         proxy_set_header   X-Real-IP        $remote_addr;
         proxy_set_header   X-Forwarded-For  $proxy_add_x_forwarded_for;
         proxy_set_header Via    "nginx";

        }
 }

==============

时间: 2025-01-30 04:26:30

nginx做非80端口转发的相关文章

Nginx代理非80端口

Nginx通过80端口反向代理到Tomcat实现很简单,通过Jsp的request.getServerPort()获取到的端口号依然是80,而如果Nginx使用非80端口做反响代理时request.getServerPort()获取到的端口号返回依然会是80,这样边无法正确response.sendRedirect String path = request.getContextPath();  String basePath = request.getScheme()+"://"+r

Nginx服务器中配置非80端口的端口转发方法详解_nginx

nginx可以很方便的配置成反向代理服务器: server { listen 80; server_name localhost; location / { proxy_pass http://x.x.x.x:9500; proxy_set_header Host $host:80; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy

服务器-求大神解惑,tomcat只能绑定域名到非80端口,用80端口绑定的话,外网无法通过域名访问

问题描述 求大神解惑,tomcat只能绑定域名到非80端口,用80端口绑定的话,外网无法通过域名访问 我按照网上的教程,已经把tomcat的端口号从8080改为了80,且配置好了host,如下所示(确认80端口未被占用,域名也已经备案,防火墙也关了): <Host name="www.xxx.com" appBase="webapps" unpackWARs="true" autoDeploy="true" xmlVal

jboss非80端口多域名访问java应用

问题描述 现有一台主机服务器,用IIS部署了一个用.NET做的网站,80端口已经被占用.现有一个用ssh做的java网站,同样在该主机上用jboss-5.1.0.GA部署问题:已经申请了3个域名,如http://www.hello.com,http://hello.com,http://helloworld.com已经绑定到主机服务器的IP上,请问如何设置,就能通过在url地址栏中输入上述的不带端口号的三个网址就能访问我部署到jboss-5.1.0.GA的java应用?请大家帮忙,最好能附上配置

配置nginx反向代理用做内网域名转发

情景 由于公司内网有多台服务器的http服务要映射到公司外网静态IP,如果用路由的端口映射来做,就只能一台内网服务器的80端口映射到外网80端口,其他服务器的80端口只能映射到外网的非80端口.非80端口的映射在访问的时候要域名加上端口,比较麻烦.并且公司入口路由最多只能做20个端口映射.肯定以后不够用. 然后k兄就提议可以在内网搭建个nginx反向代理服务器,将nginx反向代理服务器的80映射到外网IP的80,这样指向到公司外网IP的域名的HTTP请求就会发送到nginx反向代理服务器,利用

详解Nginx与Apache共用80端口的配置方法_nginx

一个典型的 Nginx + Apache 应用方案可以是Nginx 占用 80 端口,过滤静态请求,然后动态请求即 Proxy 到 Apache 的 8080 端口.Proxy 反向代理的好处是访问的时候,始终就是 80 端口,来访者不会觉察到有任何的区别. 但有的应用确非常"聪明",识别到 Apache 所位于的端口是 8080 ,就会把相关的超链接都一并加上 :8080 的后续.这么就死定了,还能有正常访问麽?! 有个方法可以解决这事,就是把 apache 也运行在80端口上.同一

如何实现F5入口IP依据不同的端口转发到不同的POOL

注意点:VS中要设置HTTP Profile:none->http 实现要求:同一个入口IP依据不同的端口实现转发到不同的服务器 实现原理:对VS设置规则,使用规则对数据包实现转发 规则示例: when CLIENT_ACCEPTED {  if { [TCP::local_port] equals "8089" } {     pool  chicago_pool_8089  } else {     pool  chicago_pool_80 } } 实际测试发现:如果ELS

SSH端口转发情景模拟

SSH会自动加密和解密所有SSH客户端与服务端之间的网络数据.这一过程有时也被叫做"隧道"(tunneling),这是因为SSH为其他TCP链接提供了一个安全的通道来进行传输而得名.例如,Telnet,SMTP,LDAP这些TCP应用均能够从中得益,避免了用户名,密码以及隐私信息的明文传输.而与此同时,如果您工作环境中的防火墙限制了一些网络端口的使用,但是允许SSH的连接,那么也能够通过将 TCP 端口转发来使用 SSH 进行通讯. (一)概述 SSH端口转发能够将其他TCP端口的网络

Linux系统普通用户添加80端口的方法

在Linux系统中,默认情况下只有root用户才可以绑定1024以下的端口,而普通用户需要绑定1024以下的端口,基本方法是使用的Nginx代理转发或者操作系统的iptables进行端口转发两种方法进行,本文将以tomcat为例,直接以普通用户运行tomcat,并使tomcat程序绑定80端口或者转发代理至tomcat的8080端口. 要使机器的80端口给客户端方法问,可以参考以下方式进行: iptables端口转发方式 Nginx代理模式 setcap方式  1.iptables方式 RHEL