Скрыть номер порта в URL, доступном для контейнера NGINX Docker - PullRequest
1 голос
/ 05 февраля 2020

Я запускаю Docker NGINX контейнер с открытыми портами 8080 и 8443.

Так что я захожу на страницу приветствия NGINX по адресу: http://www.nginx.test:8080


Я пытаюсь выяснить, ЕСЛИ возможно спрятать / удалить порт в URL.

Поэтому я захожу на страницу приветствия NGINX по адресу: http://www.nginx.test


Поскольку NGINX - это обратный прокси-сервер, он должен работать. Все еще новичок в NGINX, и мне пришлось поискать в Google некоторые ответы, и в основном они применяются в попытках ниже.

Сначала я попробовал (не работало) NGINX директива proxy_redirect на сервер уровень, подобный следующему:

server {
    listen 8080;
    listen [::]:8080;
    server_name www.nginx.test;

    proxy_redirect $scheme://$server_name:8080 $scheme://$server_name;
}

Затем я попытался (не работал) NGINX директива proxy_pass на location level вроде этого:

server {
    listen 8080;
    listen [::]:8080;
    server_name www.nginx.test;

    location / {
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_pass $scheme://$server_name;
    }
}

Возможно, есть нечто большее, чтобы заставить его работать.

1 Ответ

1 голос
/ 05 февраля 2020

http://www.nginx.test интерпретируется как http://www.nginx.test:80 (и с SSL https://www.nginx.test == https://www.nginx.test:443).

Так что вам нужно прослушивать порт 80, если вы хотите сбросить его с URL.

С помощью docker вы можете сопоставить порт хоста с другим портом в контейнере.
Таким образом, не изменяя содержимое вашего NGINX контейнера, вы можете просто сопоставить порт 80 вашего docker сервера в порт 8080 вашего nginx контейнера:

docker container run ... --publish 80:8080 your_image ...
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...