我正在尝试在RHEL版本上设置一个JBoss应用程序服务器。 Jboss绑定到127.0.0.1:8080,我试图设置iptables将所有通信从端口80redirect到端口8080.这是我的configuration文件:
:PREROUTING ACCEPT [0:0] :POSTROUTING ACCEPT [0:0] :OUTPUT ACCEPT [0:0] -A PREROUTING -i eth0 -p tcp -m tcp --dport 80 -j DNAT - 到目的地127.0.0.1:8080 -A PREROUTING -i eth0 -p tcp -m tcp --dport 443 -j DNAT - 到目的地127.0.0.1:8443 -A OUTPUT -p tcp --dport 80 -j DNAT - 到目的地127.0.0.1:8080 承诺 *过滤 :input接受[0:0] :FORWARD ACCEPT [0:0] :OUTPUT ACCEPT [0:0] -Ainput-m状态 - 状态ESTABLISHED,相关-j接受 -Ainput-p icmp -j ACCEPT -Ainput-i lo -j接受 -A INPUT -m状态--state新-m tcp -p tcp --dport 22 -j ACCEPT -Ainput-p tcp --dport 80 -j ACCEPT -Ainput-p tcp --dport 443 -j ACCEPT -A FORWARD -i eth0 -m状态--state新-m tcp -p tcp -d 127.0.0.1 --dport 8080 -j ACCEPT -INPUT -J REJECT --reject-with icmp-host-prohibited -A FORWARD -j REJECT --reject-with icmp-host-prohibited 承诺
但不pipe怎么样,iptables -L -v -n的输出结果都显示所有stream量都被拒绝了。 如果我closuresiptables,它可以工作,但我想使用它。 谢谢。
这是输出:
链INPUT(策略ACCEPT 0包,0字节)
pkts字节目标人选退出源目的地
165 10948 ACCEPT all - * * 0.0.0.0/0 0.0.0.0/0状态RELATED,ESTABLISHED
0 0 ACCEPT icmp - * * 0.0.0.0/0 0.0.0.0/0
0 0全部接受 - lo * 0.0.0.0/0 0.0.0.0/0
0 0 ACCEPT tcp - * * 0.0.0.0/0 0.0.0.0/0 state new tcp dpt:22
12 576 ACCEPT tcp - * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:80
0 0 ACCEPT tcp - * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:443
3237 405K REJECT all - * * 0.0.0.0/0 0.0.0.0/0 reject-with icmp-host-prohibited
链FORWARD(策略接受0包,0字节)
pkts字节目标人选退出源目的地
0 0 ACCEPT tcp - eth0 * 0.0.0.0/0 127.0.0.1 state NEW tcp dpt:8080
0 0全部拒绝 - * * 0.0.0.0/0 0.0.0.0/0 reject-with icmp-host-prohibited
链OUTPUT(策略ACCEPT 146包,19249字节)
pkts字节目标人选退出源目的地
我会说这是错误的做法。 无论如何,我不想让JBoss(也不是tomcat)来pipe理其他的testing目的。 这不是为了直接pipe理外部连接而devise的。
选项1将 Apache Web服务器代理设置为127.0.0.1:8080
你需要在你的apache设置的某个地方
LoadModule proxy_module {path-to-modules}/mod_proxy.so AddModule mod_proxy.c
或者与apache2
$ sudo a2enmod proxy $ sudo apache2ctl restart
而在虚拟主机,你可以有几个应用程序
ProxyPass /myapp http://localhost:8080/myapp ProxyPassReverse /myapp http://localhost:8080/myapp
或者有一个独特的
ProxyPass / http://localhost:8080/ ProxyPassReverse / http://localhost:8080/
改变虚拟主机设置后,不需要重启apache
$ sudo apache2ctl graceful
会更新设置而不会丢失正在进行的连
选项2,使用mod_ajp
$ sudo a2enmod proxy_ajp $ sudo apache2ctl restart
将此添加到您的虚拟主机
ProxyPass /app ajp://backend.example.com:8009/app
假设tomcat实例被configuration为在端口8009上有一个jp连接器。检查tomcat设置。
http://httpd.apache.org/docs/2.2/mod/mod_proxy_ajp.html
选项3,使用mod_jk http://tomcat.apache.org/connectors-doc/
你还有另外一个问题,就是configurationJBoss来创build80的链接,这将是一个JBoss的设置问题…不记得它的设置,我只能记得它花了我一会儿找出。 到目前为止,我更喜欢使用ajp连接器。
对不起,我现在没有权限访问JBoss,也许有人可以告诉我们这个设置在哪里。
如果您不想或不能使用反向代理在端口80中公开JBoss,那么在JBoss中使用端口转发的可行configuration是:
/sbin/iptables -t nat -A OUTPUT --destination localhost -p tcp --dport 80 -j REDIRECT --to-ports 8080 /sbin/iptables -t nat -A OUTPUT --destination <network IP address> -p tcp --dport 80 -j REDIRECT --to-ports 8080 /sbin/iptables -t nat -A PREROUTING --destination <network IP address> -p tcp --dport 80 -j REDIRECT --to-ports 8080 /sbin/iptables -t nat -A OUTPUT --destination localhost -p tcp --dport 443 -j REDIRECT --to-ports 8443 /sbin/iptables -t nat -A OUTPUT --destination <network IP address> -p tcp --dport 443 -j REDIRECT --to-ports 8443 /sbin/iptables -t nat -A PREROUTING --destination <network IP address> -p tcp --dport 443 -j REDIRECT --to-ports 8443 /sbin/iptables --flush PREROUTING -t nat /sbin/iptables --flush OUTPUT -t nat
您也可以直接在端口80上进行JBoss监听。
请参阅: 在jboss AS 7.1中, 在端口80或443上运行JBoss或将侦听端口设置为80