Я пытаюсь перемещаться по сорнякам nginx и обратному прокси-серверу, и одна область, в которой я путаюсь, - это сопоставления портов. Вот пример nginx файла конфигурации:
server {
listen 443 ssl http2 default_server;
listen [::]:443 ssl http2 default_server;
server_name www.domain.com;
passenger_enabled on;
root /home/ubuntu/app/public;
include snippets/self-signed.conf;
include snippets/ssl-params.conf;
}
Здесь я указываю, что мое приложение должно прослушивать порт 443, поскольку на нем есть самозаверяющий сертификат. Он не принимает порт 80 http, но только 443. Вот пример, который я нашел о proxy_passing для localhost. Что я и хочу сделать. Вот пример:
server {
listen 443;
server_name localhost;
ssl on;
ssl_certificate server.crt;
ssl_certificate_key server.key;
ssl_session_timeout 5m;
ssl_protocols SSLv2 SSLv3 TLSv1;
ssl_ciphers ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP;
ssl_prefer_server_ciphers on;
location / {
proxy_pass http://localhost:3000;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Client-Verify SUCCESS;
proxy_set_header X-Client-DN $ssl_client_s_dn;
proxy_set_header X-SSL-Subject $ssl_client_s_dn;
proxy_set_header X-SSL-Issuer $ssl_client_i_dn;
proxy_read_timeout 1800;
proxy_connect_timeout 1800;
}
}
Вот то, чего я не понимаю и могу использовать некоторые пояснения. Какой порт / URL я слушаю во втором примере? В блоке сервера я вижу это:
listen 443;
server_name localhost;
Это означает, что мы слушаем localhost
на 443
через https. Это достаточно просто, чтобы понять до сих пор. Теперь мы попадаем в блок location
.
location / {
proxy_pass http://localhost:3000;
Что здесь происходит? Если я начну nginx и наберу в адресной строке http:localhost:3000
, что произойдет? Сбой, потому что я набрал http
? Разве это не должно было быть https:localhost:3000
? Слушаю ли я порт 80, 443 или 3000?
Кроме того, небольшой вопрос. Что произойдет, если я открою свое приложение Postman и наберу запрос get на http://localhost:3000
или https://localhost
со второй конфигурацией? Будет ли он попадать на сервер nginx или попытаться связаться с локальным хостом моего ноутбука?