Назад | Перейти на главную страницу

правильно настроить PF с интерфейсами loopback для прокси nginx

Я пытаюсь запустить пару jail-ов freebsd для своего веб-сервера и сервера приложений, на котором работает node.js.

У меня сетевая карта одна (igb0) с настраиваемым интерфейсом обратной связи (lo666), для которых я создал 3 псевдонима, вот часть моих /etc/rc.conf

dumpdev="AUTO"
zfs_enable="YES"
sshd_enable="YES"
local_unbound_enable=yes
ifconfig_igb0="inet 192.168.1.1 netmask 255.255.255.0 broadcast 192.168.1.255"
# Custom loopback interface
cloned_interfaces="lo666"
ifconfig_lo666_alias0="inet 10.6.6.6 netmask 255.255.255.255"
ifconfig_lo666_alias1="inet 10.6.6.7 netmask 255.255.255.255"
ifconfig_lo666_alias2="inet 10.6.6.8 netmask 255.255.255.255"
# Default router
defaultrouter="192.168.1.254"

на моем /etc/pf.conf у меня есть это

### Interfaces ###
 ExtIf ="igb0"
 IntIf ="lo666"

### Hosts ###
 IP_PUB ="192.168.1.1"
 IP_JAIL = "{10.6.6.6, 10.6.6.7, 10.6.6.8}"
 IP_JAIL_WWW = "10.6.6.6"
 IP_JAIL_DBS = "10.6.6.7"
 IP_JAIL_APP = "10.6.6.8"
 NET_JAIL="10.6.6.0/24"
 ### Ports ###
 PORT_WWW="{80,443}"
 PORT_NODE="{1337,8080}"

scrub in all

# nat all jail traffic
nat pass on $ExtIf from $NET_JAIL to any -> $IP_PUB
# WWW
rdr pass on $ExtIf proto tcp from any to $IP_PUB port $PORT_WWW -> $IP_JAIL_WWW
rdr pass on $IntIf proto tcp from any to $IP_JAIL_WWW port $PORT_NODE -> $IP_JAIL_APP

так бегает

# pfctl -sn
nat pass on igb0 inet from 10.6.6.0/24 to any -> 192.168.1.1
rdr pass on igb0 inet proto tcp from any to 192.168.1.1 port = http -> 10.6.6.6
rdr pass on igb0 inet proto tcp from any to 192.168.1.1 port = https -> 10.6.6.6
rdr pass on lo666 inet proto tcp from any to 10.6.6.6 port = 1337 -> 10.6.6.8
rdr pass on lo666 inet proto tcp from any to 10.6.6.6 port = 8080 -> 10.6.6.8

так что из тюрьмы WWW я могу

root@www:/ # curl http://10.6.6.8:1337
Hello World

а также из тюрьмы приложения я вижу домашнюю страницу nginx

root@app:/# curl http://10.6.6.6
<!DOCTYPE html>
<html>
<head>
<title>Welcome to nginx!</title>
...
</html>

Итак, почему я получаю сообщение об ошибке 502 Bad Gateway, когда я пытаюсь получить к нему доступ через браузер? вот мой nginx.conf

server {
      server_name  web.domain.tld;
        location / {
                # For Read Requests
                proxy_pass http://10.6.6.8:1370;
                proxy_set_header        Host            $host;
                proxy_set_header        X-Real-IP       $remote_addr;
                proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for;
        }
    }

это то, что я получаю в моем журнале ошибок nginx

2014/05/23 13:14:44 [error] 92876#0: *1 kevent() reported that connect() failed (61: Connection refused) while connecting to upstream, client: 192.168.1.10, server: web.domain.tld, request: "GET /favicon.ico HTTP/1.1", upstream: "http://10.6.6.8:1370/favicon.ico", host: "web.domain.tld"

возможно, я чрезмерно усложняю его, и я хотел заблокировать порт 1337 для внешних пользователей.

любой совет очень ценится.

так должно быть http://10.6.6.8:1337 не http://10.6.6.8:1370 в nginx.conf