Nginx代理非80端口

简介:

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

String path = request.getContextPath(); 

String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";

这样response.sendRedirect会跳转到80端口去


解决办法:

修改proxy.conf获取你把代理的配置写到了nginx内,也可以在其内部修改

proxy_redirect          off;

# nginx非80端口处理 
proxy_set_header        Host $host:$server_port
# 获取真实IP 
proxy_set_header        X-Real-IP $remote_addr; 
# 获取代理者的真实ip 
proxy_set_header       X-Forwarded-For   $proxy_add_x_forwarded_for; 
client_max_body_size    10m; 
client_body_buffer_size 128k; 
proxy_connect_timeout   90; 
proxy_send_timeout      90; 
proxy_read_timeout      90; 
proxy_buffer_size       4k; 
proxy_buffers           4 32k; 
proxy_busy_buffers_size 64k; 
proxy_temp_file_write_size 64k;


nginx vhost内虚拟主机代理配置

location ~* "\.(jsp|do)$" { 

        proxy_pass http://xxx.com;

# 使用include引入就可以了 
        include proxy.conf; 
}


参考帮助

Nginx内置变量含义

名称                                  版本                    说明(变量列表来源于文件 ngx_http_variables ) 
$args                                1.0.8                    请求中的参数; 
$binary_remote_addr         1.0.8                   远程地址的二进制表示 
$body_bytes_sent              1.0.8                   已发送的消息体字节数 
$content_length                 1.0.8                   HTTP请求信息里的"Content-Length"; 
$content_type                    1.0.8                  请求信息里的"Content-Type"; 
$document_root                 1.0.8                  针对当前请求的根路径设置值; 
$document_uri                   1.0.8                  与$uri相同; 
$host                                1.0.8              请求信息中的"Host",如果请求中没有Host行,则等于设置的服务器名; 
$hostname                       1.0.8     
$http_cookie                     1.0.8              cookie 信息 
$http_post                       1.0.8     
$http_referer                   1.0.8              引用地址 
$http_user_agent             1.0.8             客户端代理信息 
$http_via                          1.0.8            最后一个访问服务器的Ip地址。 
$http_x_forwarded_for    1.0.8             相当于网络访问路径。 
$is_args                        1.0.8     
$limit_rate                     1.0.8            对连接速率的限制; 
$nginx_version               1.0.8     
$pid                              1.0.8     
$query_string                 1.0.8           与$args相同; 
$realpath_root               1.0.8     
$remote_addr                1.0.8           客户端地址; 
$remote_port                 1.0.8           客户端端口号; 
$remote_user                 1.0.8           客户端用户名,认证用; 
$request                        1.0.8           用户请求 
$request_body                1.0.8     
$request_body_file         1.0.8          发往后端的本地文件名称 
$request_completion      1.0.8     
$request_filename         1.0.8          当前请求的文件路径名 
$request_method          1.0.8           请求的方法,比如"GET"、"POST"等; 
$request_uri                  1.0.8           请求的URI,带参数; 

$scheme                       1.0.8           所用的协议,比如http或者是https,比如rewrite^(.+)


scheme://example.com$1redirect; 
$sent_http_cache_control      1.0.8     
$sent_http_connection          1.0.8     
$sent_http_content_length    1.0.8     
$sent_http_content_type      1.0.8     
$sent_http_keep_alive          1.0.8     
$sent_http_last_modified      1.0.8     
$sent_http_location              1.0.8     
$sent_http_transfer_encoding    1.0.8     
$server_addr                       1.0.8    服务器地址,如果没有用listen指明服务器地址,使用这个变量将发起一次系统调用以取得地址(造成资源浪费); 
$server_name                     1.0.8    请求到达的服务器名; 
$server_port                       1.0.8    请求到达的服务器端口号; 
$server_protocol                 1.0.8    请求的协议版本,"HTTP/1.0"或"HTTP/1.1"; 
$uri                                   1.0.8    请求的URI,可能和最初的值有不同,比如经过重定向之类的 

参考文章:http://blog.csdn.net/xzknet/article/details/22672127 

Nginx代理非80端口
本文转自    鹏爱   51CTO博客,原文链接:http://blog.51cto.com/pengai/1942072
相关文章
|
28天前
|
监控 应用服务中间件 测试技术
确保正则表达式在 Nginx 代理中的准确性和稳定性
【10月更文挑战第19天】总之,正则表达式在 Nginx 代理中具有重要作用,但要确保其准确性和稳定性需要付出一定的努力和关注。通过以上方法的综合运用,我们可以提高正则表达式配置的可靠性,为用户提供更好的服务体验。
|
15天前
|
前端开发 应用服务中间件 定位技术
Nginx 如何代理转发传递真实 ip 地址?
【10月更文挑战第32天】
109 5
Nginx 如何代理转发传递真实 ip 地址?
|
10天前
|
负载均衡 前端开发 JavaScript
Nginx 代理多服务
以上是 Nginx 代理多服务的几种常见方式,在实际应用中,可以根据具体的业务需求和系统架构选择合适的代理方式,并结合其他 Nginx 的功能和配置来优化和完善系统的性能和功能。
|
1月前
|
负载均衡 应用服务中间件 Linux
nginx学习,看这一篇就够了:下载、安装。使用:正向代理、反向代理、负载均衡。常用命令和配置文件,很全
这篇博客文章详细介绍了Nginx的下载、安装、配置以及使用,包括正向代理、反向代理、负载均衡、动静分离等高级功能,并通过具体实例讲解了如何进行配置。
154 4
nginx学习,看这一篇就够了:下载、安装。使用:正向代理、反向代理、负载均衡。常用命令和配置文件,很全
|
28天前
|
应用服务中间件 API nginx
使用正则表达式实现 Nginx 代理
【10月更文挑战第19天】在不断发展的互联网技术中,掌握正则表达式在 Nginx 代理中的应用是非常重要的。不断探索和实践,将有助于我们在实际工作中更好地运用这一技术,提升项目的质量和效率。
|
28天前
|
缓存 负载均衡 应用服务中间件
Nginx 实现一个端口代理多个前后端服务
【10月更文挑战第19天】Nginx 的强大功能不仅限于此,它还可以与其他技术和工具相结合,为我们的应用提供更强大的支持和保障。在不断发展的互联网时代,掌握 Nginx 的使用技巧将为我们的工作和生活带来更多的便利和效益。
|
1月前
|
存储 缓存 监控
|
1月前
|
存储 缓存 负载均衡
Nginx代理缓存机制
【10月更文挑战第2天】
71 4
|
4月前
|
前端开发 应用服务中间件 nginx
网页设计,若依项目修改(It must be done)01----若依打包位置,nginx代理前端静态资源和后端接口,就是怎样设置转载,访问固定端口,让他访问其他资料的配置文件,访问/,给你那些
网页设计,若依项目修改(It must be done)01----若依打包位置,nginx代理前端静态资源和后端接口,就是怎样设置转载,访问固定端口,让他访问其他资料的配置文件,访问/,给你那些
|
6月前
|
Ubuntu 应用服务中间件 Linux
nginx 配置代理ip访问https的域名配置
nginx 配置代理ip访问https的域名配置
1199 2