nginx怎么nginx 代理多个端口端口

扫一扫体验手机阅读
nginx代理tcp3306端口
<span type="1" blog_id="2095685" userid='
34篇文章,3W+人气,0粉丝
高并发架构之路
¥51.00112人订阅
新西兰资深网工运维之道
¥51.00404人订阅
前百度高级工程师的架构高可用实战
¥51.00232人订阅
<span type="1" blog_id="2095685" userid='Nginx反向代理关于端口的问题 - 李克华 - 博客园
云计算高级群:
交流:Hadoop、NoSQL、分布式、lucene、solr、nutch
Nginx默认反向后的端口为80,因此存在被代理后的端口为80的问题,这就导致访问出错。主要原因在Nginx的配置文件的host配置时没有设置响应的端口。
相关配置文件如下:
proxy_pass http://ime-server/ime-
proxy_set_header Host $
proxy_set_header X-Real-IP $remote_
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_
如上,Host配置只有host,没有对应的port,这就导致在被代理的地方取得错误的端口。本文以java为例:
String scheme = httpRequest.getScheme();
String serverName = httpRequest.getServerName();
int port = httpRequest.getServerPort();
//服务请求地址
String requestURI = scheme+"://"+serverName+":"+port+"/ime-server/rest/"+serviceName+"/wmts";
  这时,取得的port为80,虽然nginx监听的端口为9090。这个错误让我很郁闷。于是,修改nginx的配置文件,将Host后面的改为 $host:$server_port即可,配置文件如下:
location /ime-server {
index.html index.
proxy_pass http://ime-server/ime-
proxy_set_header Host $host:$server_
proxy_set_header X-Real-IP $remote_
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_
  重启nginx,./nginx -s reload 。然后检查被代理后的端口信息是否正确:
随笔 - 256
评论 - 104nginx可以把本机80端口proxy_pass到本机的8080端口吗?
[问题点数:20分]
本版专家分:0
CSDN今日推荐
匿名用户不能发表回复!|
CSDN今日推荐Linux的SELinux安全性控制除作用于文件系统外还作用于端口,这使得那些作为服务启动的进程只能在规定的几个端口上监听。为叙述方便我们称之为受控端口。
nginx监听端口
要查看当前有哪些受控端口可执行:
# semanage port -l | grep '^http_port_t'
http_port_t
80, 81, 443, 488, 8008, 8009, 8443, 9000
这里显示了八个端口号,其中包括80端口。由于nginx默认在80端口监听因此启动正常。
# service nginx start
我们接下来可做个试验,看看nginx能否在其它端口上监听,比如8888端口。为此新加/etc/nginx/conf.d/test.conf文件:
# /etc/nginx/conf.d/test.conf
你也可以不新加本文件,而是直接修改/etc/nginx/conf.d/default.conf文件。
完成后让nginx重新加载配置:
# nginx -s reload
虽然该命令执行成功,但实际上8888端口并未处于监听状态:
# netstat -anp | grep 8888
上面的netstat命令无输出,这表明8888端口不在监听状态。进一步我们查看一下审计日志:
vi /var/log/audit/audit.log
在文件尾部发现如下两行:
1 type=AVC msg=audit(.454:2430): avc:
{ name_bind } for
pid=1268 comm="nginx" src=8888 scontext=system_u:system_r:httpd_t:s0 tcontext=system_u:object_r:port_t:s0 tclass=tcp_socket
2 type=SYSCALL msg=audit(.454:2430): arch=c000003e syscall=49 success=no exit=-13 a0=b a1=1b5cc60 a2=10 a3=7ffdaf0be83c items=0 ppid=1 pid=1268 auid= uid=0 gid=0 euid=0 suid=0 fsuid=0 egid=0 sgid=0 fsgid=0 tty=(none) ses= comm="nginx" exe="/usr/sbin/nginx" subj=system_u:system_r:httpd_t:s0 key=(null)
这里的详细含义我也不清楚,但肯定的是nginx无权限在8888端口上监听。如果你确实希望nginx在8888端口上监听,则可把8888端口号注册为受控端口。注册前请先检查一下8888端口是否已被登记:
semanage port -l | grep 8888
如果有输出则表示8888端口已被注册,此时请换用其它端口。
要注册http 8888端口号请执行:
semanage port -a -t http_port_t -p tcp 8888
作为一种好习惯我们应再次检查一下受控端口列表,看看有没有刚注册的端口号:
semanage port -l | grep '^http_port_t'
最后再让nginx重新加载配置:
# nginx -s reload
此时8888端口应处于监听状态:
# netstat -anp | grep 8888
nginx反向代理端口
如果你想让你的应用被nginx反向代理,则被反向代理的端口号也必须为已受控端口。
不知何故,只当你把nginx启动为服务时端口才受Linux安全性控制,如果你直接运行nginx则不受此控制。
阅读(...) 评论()Nginx服务器中配置非80端口的端口转发方法详解
转载 &更新时间:日 09:41:27 & 作者:Hector
这篇文章主要介绍了Nginx服务器中配置非80端口的端口转发方法详解,文中使用到了Nginx中的proxy_pass配置项,需要的朋友可以参考下
nginx可以很方便的配置成反向代理服务器:
  server {
  listen 80;
  server_
  location / {
  proxy_pass http://x.x.x.x:9500;
  proxy_set_header Host $host:80;
  proxy_set_header X-Real-IP $remote_
  proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_
  proxy_set_header Via "nginx";
但是如果nginx的监听端口不是默认的80端口,改为其他端口如81端口。
后端服务器中request.getServerPort()无法获得正确的端口,返回的仍然是80;
在response.sendRedirect()时,客户端可能无法获得正确的重定向url。
正确的配置方法下面我们详细来看:
增加Nginx虚拟主机
要做Nginx的转发,当然就要对Nginx做配置。可以通过添加虚拟主机配置来增强Nginx的功能。首先看看Nginx的配置文件,笔者的Nginx文件是在/etc/nginx/nginx.conf。从上图可以看到Nginx在最后引入了vhosts.d目录下的配置文件。那么就要在/etc/nginx/vhosts.d目录下创建以.conf为后缀的文件(如果该目录不存在需要自己创建)。
Nginx做非80端口转发
要做转发,可以使用Nginx的proxy_pass配置项。Nginx监听80端口,接收到请求之后就会转发到要转发的URL。具体的配置如下:
server_name www.test.com
listen 80;
location / {
proxy_pass http://127.0.0.1:8080;
是的,就是这么简单就可以了。这是配置端口转发的核心。
但是,当遇到需要获取真实IP的业务时,还需要添加关于真实IP的配置:
server_name www.test.com
listen 80;
location / {
proxy_pass http://127.0.0.1:8080;
proxy_set_header Host $host:80;
proxy_set_header X-Real-IP $remote_
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_
proxy_set_header这句配置是改变http的请求头。而Host是请求的主机名,X-Real-IP是请求的真实IP,X-Forwarded-For表示请求是由谁发起的。
这次的配置可能对大部分人来说都很简单,但是笔者刚接触Nginx配置这一块,因此记录下来,分享给有需要的人。如有建议和批评,欢迎指出。通过这次的学习发现,Nginx的配置是很值得学习的。
您可能感兴趣的文章:
大家感兴趣的内容
12345678910
最近更新的内容
常用在线小工具}

我要回帖

更多关于 nginx 代理端口 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信