nginx - дифференциация между localhost и IP сервера

Я мигрировал от стека LAMP до nodejs + nginx впереди и поразил путем запуска различных приложений на различных портах. в настоящее время мой nginx содержит:

server {
        listen 80 default_server;
        listen [::]:80 default_server ipv6only=on;

        root /srv/www/html;
        index index.php index.html index.htm;

        server_name domain.com www.domain.com;
        rewrite ^/(.*) https://nulll.me/$1 permanent;
}

server {
        listen 443;
        server_name domain.com www.domain.com;

        root /srv/www/html;
        index index.html index.htm;

        ssl on;
        ssl_certificate /home/---------------.crt;
        ssl_certificate_key /home/--------------.key;

        ssl_session_timeout 5m;

        ssl_protocols SSLv3 TLSv1 TLSv1.1 TLSv1.2;
        ssl_prefer_server_ciphers on;
        ssl_ciphers AES256+EECDH:AES256+EDH:!aNULL;

        location / {
                try_files $uri $uri/ =404;
        }

        location /app1 {
            proxy_pass http://SERVER_IP_ADDR:8888;
            proxy_http_version 1.1;
            proxy_set_header Upgrade $http_upgrade;
            proxy_set_header Connection 'upgrade';
            proxy_set_header Host $host;
            proxy_cache_bypass $http_upgrade;
    }

        location /app2 {
            proxy_pass http://SERVER_IP_ADDR:5555;
            proxy_http_version 1.1;
            proxy_set_header Upgrade $http_upgrade;
            proxy_set_header Connection 'upgrade';
            proxy_set_header Host $host;
            proxy_cache_bypass $http_upgrade;
    }

}

Теперь от этого conf, что я хотел, должен был представить различные приложения, которые уже не выполняют различных портов, например, 8888, 5555 и т.д., которым я выполняю proxy_pass http://SERVER_IP_ADDR:8888;. И у меня есть некоторые приложения, которые я должен передать внутренне путем привязки их с localhost портами eg. 127.0.0.1:6666 и я не хочу, чтобы они были доступны вне моей машины.

Таким образом, мой вопрос, делает Nginx, получает запрос на порте 80 / или ssl порте и маршрутах, которые запрашивают к/app1 или/app2, чтобы я передал прокси, и возвращает ответ при защите тех портов? Или действительно ли кто-либо может получить доступ к тем портам, которые я имею, связывают с localhost:someport? Или если они видимы, как я делаю их защищенными так, чтобы даже при доступе к тем портам (http://MY_IP_ADDRESS:8070) nginx или что-то заблокировало их и могло только быть получено доступ nginx когда запрос маршрутизации.

Я смущен, потому что я должен указать: proxy_pass http://SERVER_IP_ADDR:8888; IP-АДРЕС моей машины. Не могу я делать это как proxy_pass http://127.0.0.1:8888; , потому что nginx может слушать те приложения сразу же на localhost, находящемся на той же машине?

TLDR; То, что я хочу, должно блокировать прямой доступ различных портов на моей машине другими взглядами, и только в машине процессы должны смочь общаться с теми портами. Таким образом, nginx должен получить запрос на нормальном http/s порте и передать, он к некоторой другой работе приложения узла позволяет, говорят 8 888 портов и запрос возврата. Но люди не должны мочь получить доступ как это: http://My_SERVER_IP:8080/.Спасибо

Править: Если существует какой-либо путь, я мог бы настроить Nginx, чтобы слушать все порты кроме 80/443 и слушать 80/443 отдельно, так, чтобы все другие порты были невидимы для внешней стороны, но могли быть переданы и соединены в процессах, которые сделали бы также.

0
задан 29 March 2015 в 12:50
1 ответ
  1. привяжите ваши службы к адресам обратной связи. Таким образом, никто не сможет получить к ним доступ извне компьютера.
  2. используйте брандмауэр для блокировки всех входящих подключений к портам, которые не должны быть видимы извне
  3. не пытайтесь заставить nginx прослушивать все порты .У вас будет больше проблем, чем оно того стоит.

Вы получите наилучшие результаты, придерживаясь всех трех пунктов.

0
ответ дан 5 December 2019 в 12:53

Теги

Похожие вопросы