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

Отображение Nginx с прозрачным портом / прокси (?)

Я не совсем уверен, что я ищу здесь, поэтому я не могу эффективно найти свой ответ.

я использую обезвоженный для задач LetsEncrypt TLS-ALPN. Я размещаю службу за nginx, используя

stream {
    map $ssl_preread_alpn_protocols $tls_port {
        ~\bacme-tls/1\b 10443;
        default 3443;
    }

    server {
        listen 443;
        listen [::]:443;
        proxy_pass 127.0.0.1:$tls_port;
        ssl_preread on;
    }
}

server {
    listen 80 default_server;
    listen [::]:80 default_server;
    server_name _;
    return 301 https://$host$request_uri;
}

server {
    listen 3443 ssl;
    listen [::]:3443 ssl;

    server_name wanderingwerners.com www.wanderingwerners.com;

    ssl_certificate /path/to/my/fullchain.pem;
    ssl_certificate_key /path/to/my/privkey.pem;

    index index.html;
    root /var/www/wanderingwerners.com/;
}

Это прекрасно работает - я могу получать новые сертификаты с нулевым временем простоя, и мой веб-сайт доступен. Однако, когда я открываю свою страницу, она работает нормально. Когда я нахожу ссылку, она показывает мне https://www.wanderingwerners.com/a-beginning/

Однако нажатие на эту ссылку приводит меня к https://www.wanderingwerners.com:3443/a-beginning/

Это нежелательно - я бы предпочел, чтобы это выглядело как обычное https://www.wanderingwerners.com/a-beginning/

Я предполагаю, что то, что я настроил здесь, в nginx, вызывает путаницу, но я не уверен.

Есть ли способ обновить конфигурацию nginx, чтобы обезвоженный сервер продолжал работать, а также сообщить браузеру, что :3443 не действительно к чему они должны подключаться? (Или, по крайней мере, не показывать его в адресной строке)

Обновить

Когда я делаю curl https://www.wanderingwerners.com/a-beginning это дает мне 301 редирект. Что-то определенно происходит с моей конфигурацией nginx.

Другое обновление

Когда я делаю curl https://www.wanderingwernerx.com/a-beginning/ он работает нормально, так что похоже, что он что-то делает с конечным /

Вероятно, что программное обеспечение вашего веб-сайта, работающее на порте 3443, генерирует ссылки в своем HTML-коде, которые включают номер порта.

Вам нужно найти способ, чтобы программа генерировала ссылки, указывающие на домен без номера порта.

Еще одно изменение, которое я предлагаю вам:

server {
    listen 127.0.0.1:3443 ssl;

    server_name wanderingwerners.com www.wanderingwerners.com;

    ssl_certificate /path/to/my/fullchain.pem;
    ssl_certificate_key /path/to/my/privkey.pem;

    index index.html;
    root /var/www/wanderingwerners.com/;
}

При этой конфигурации порт 3443 не отображается за пределами вашего сервера, он доступен только с самого сервера. Применение этой конфигурации означает, что вам нужно сначала исправить предыдущую проблему.

Описанное вами перенаправление исходит от nginx, когда вы опускали косую черту в конце URL-адреса. Вы должны суметь подавить это с помощью port_in_redirect off;.