Para o propósito da pergunta, assumirei que os seguintes IPs
Nginx 192.168.0.1
Tomcat 192.168.0.2
Configure o servidor do tomcat
Altere a seguinte linha address="127.0.0.1"
para address="192.168.0.2"
- Isso permitirá que o Tomcat ouça no ip local, em vez do endereço de loopback.
Em seguida, queremos configurar os IPtables. Eu usei o gerador aqui .
As regras abaixo são "seguras" elas não bloquearão o acesso remoto (eu permiti o SSH na porta 22, assumindo que a porta ssh é padrão), mas elas não são tão restritivas quanto talvez devessem / poderiam estar. Então, por favor, tire um minuto para examiná-los. Também removeria quaisquer regras atuais
#!/bin/sh
# iptables script generated 2016-04-20
# http://www.mista.nu/iptables
IPT="/sbin/iptables"
# Flush old rules, old custom tables
$IPT --flush
$IPT --delete-chain
# Set default policies for all three default chains
$IPT -P INPUT DROP
$IPT -P FORWARD DROP
$IPT -P OUTPUT ACCEPT
# Enable free use of loopback interfaces
$IPT -A INPUT -i lo -j ACCEPT
$IPT -A OUTPUT -o lo -j ACCEPT
# All TCP sessions should begin with SYN
$IPT -A INPUT -p tcp ! --syn -m state --state NEW -s 0.0.0.0/0 -j DROP
# Accept inbound TCP packets
$IPT -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
$IPT -A INPUT -p tcp --dport 22 -m state --state NEW -s 0.0.0.0/0 -j ACCEPT # Accepts SSH from everywhere
$IPT -A INPUT -p tcp --dport 8080 -m state --state NEW -s 192.168.0.1/32 -j ACCEPT # Accepts connection to port 8080 only from the Nginx Server
# Accept inbound ICMP messages
$IPT -A INPUT -p ICMP --icmp-type 8 -s 0.0.0.0/0 -j ACCEPT
$IPT -A INPUT -p ICMP --icmp-type 11 -s 0.0.0.0/0 -j ACCEPT
Configurar o servidor Nginx
Você precisa editar a configuração do seu servidor um pouco. Nós agora procuramos no servidor Tomcat em seu IP local.
server {
listen 80 default_server;
listen [::]:80 default_server ipv6only=on;
server_name <FQDN>;
location / {
proxy_pass http://192.168.0.2:8080;
proxy_set_header X-Forwarded-Host $host;
proxy_set_header X-Forwarded-Server $host;
proxy_set_header X-Forwarded-for $proxy_add_x_forwarded_for;
}
}
Você pode fazer proxy para um FQDN, mas precisa configurar um separado para aquele que está apontando para o servidor Nginx. Por exemplo, se o FQDN acima for myapp.example.com
, você configuraria outro FQDN, como tomcat.example.com
, e teria essa resolução em 192.168.0.2
, e então poderia substituir 192.168.0.2
na configuração nginx acima por tomcat.example.com