Я мигрировал от стека 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 отдельно, так, чтобы все другие порты были невидимы для внешней стороны, но могли быть переданы и соединены в процессах, которые сделали бы также.
Вы получите наилучшие результаты, придерживаясь всех трех пунктов.