Ek probeer om 'n JBoss-toepassingsbediener op 'n RHEL-bou op te stel. Jboss is gebind aan 127.0.0.1:8080, en ek probeer iptables opstel om alle verkeer van poort 80 na poort 8080 te herlei. Dit is my konfigurasielêer:

:PREROUTING ACCEPT [0:0]
:POSTROUTING ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]

-A PREROUTING -i eth0 -p tcp -m tcp --dport 80 -j DNAT --to-destination 127.0.0.1:8080
-A PREROUTING -i eth0 -p tcp -m tcp --dport 443 -j DNAT --to-destination 127.0.0.1:8443
-A OUTPUT  -p tcp --dport 80 -j DNAT --to-destination 127.0.0.1:8080
COMMIT

*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT
-A INPUT -p tcp --dport 80 -j ACCEPT
-A INPUT -p tcp --dport 443 -j ACCEPT
-A FORWARD -i eth0 -m state --state NEW -m tcp -p tcp -d 127.0.0.1 --dport 8080 -j ACCEPT
-A INPUT -j REJECT --reject-with icmp-host-prohibited
-A FORWARD -j REJECT --reject-with icmp-host-prohibited
COMMIT

Maar maak nie saak wat nie, die uitset van iptables -L -v -n onthul dat alle verkeer verwerp word. As ek iptables afskakel, werk dit, maar ek wil dit graag gebruik. Dankie.

Dit is die uitset:

Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination
  165 10948 ACCEPT     all  --  *      *       0.0.0.0/0            0.0.0.0/0           state RELATED,ESTABLISHED
    0     0 ACCEPT     icmp --  *      *       0.0.0.0/0            0.0.0.0/0
    0     0 ACCEPT     all  --  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

Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination
    0     0 ACCEPT     tcp  --  eth0   *       0.0.0.0/0            127.0.0.1           state NEW tcp dpt:8080
    0     0 REJECT     all  --  *      *       0.0.0.0/0            0.0.0.0/0           reject-with icmp-host-prohibited

Chain OUTPUT (policy ACCEPT 146 packets, 19249 bytes)
 pkts bytes target     prot opt in     out     source               destination
answer

Ek sou sê dit is verkeerde benadering. In elk geval, ek wil nie JBoss (ook nie tomcat) hê om direkte verbindings anders as vir toetsdoeleindes te bestuur nie. Dit is nie ontwerp om direk buiteverbindings te bestuur nie.

Opsie 1 Het apache-webbediener-instaanbediener na 127.0.0.1:8080

Jy het dit iewers in jou Apache-opstelling nodig

LoadModule proxy_module  {path-to-modules}/mod_proxy.so
AddModule  mod_proxy.c

Of met apache2

$ sudo a2enmod proxy
$ sudo apache2ctl restart

En in virtuele gashere kan jy verskeie toepassings hê

ProxyPass         /myapp  http://localhost:8080/myapp
ProxyPassReverse  /myapp  http://localhost:8080/myapp

of het 'n unieke een

ProxyPass         /  http://localhost:8080/
ProxyPassReverse  /  http://localhost:8080/

na die verandering van virtuele gashere-instelling, hoef nie apache te herbegin nie

$ sudo apache2ctl graceful

sal instellings opdateer sonder om deurlopende verbindings te laat vaar.

Opsie 2, met behulp van mod_ajp

$ sudo a2enmod proxy_ajp
$ sudo apache2ctl restart

voeg dit by jou virtuele gasheer

ProxyPass /app ajp://backend.example.com:8009/app

Gestel tomcat-instansie is gekonfigureer om 'n ajp-aansluiting op poort 8009 te hê. Gaan tomcat-instellings na.

http://httpd.apache.org/docs/2.2/mod/mod_proxy_ajp.html

Opsie 3, met behulp van mod_jk http://tomcat.apache.org/connectors-doc/

Jy sal nog steeds die ander probleem hê wat is om JBoss op te stel om skakels na :80 te skep, dit sal 'n JBoss instellingsprobleem wees ... kan nie onthou waar dit gestel is nie, al wat ek kan onthou is dat dit my 'n rukkie geneem het om uit te vind. Ek het tot dusver verkies om die ajp-aansluiting te gebruik.

Jammer, ek het nie nou toegang tot 'n JBoss-opstelling nie, miskien kan iemand ons wys waar daardie instelling is.

as jy nie 'n omgekeerde proxy wil of kan gebruik om JBoss in poort 80 bloot te stel, is 'n moontlike konfigurasie om Port Forwarding met JBoss te gebruik:

/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

Jy kan ook JBoss-luister direk op poort 80 doen.

Sien: Begin JBoss op poort 80 of 443 of stel luisterpoort op 80 in jboss AS 7.1