nginx https автоматически перенаправляет на конкретный порт

Я не уверен, правильно ли тема возобновляет мой вопрос, но я попытаюсь объяснить это .

У меня на сервере конфигурация, указанная ниже, на этом сервере есть 2 виртуальных хоста: example.com и meudomain.com

Первый виртуальный хост должен прослушивать 8080 (https), и, как вы можете видеть, я использую перенаправление с http> https 8080. Второй прослушивает 80.

Моя проблема в том, что если пользователь набирает https в адресной строке вместо http, он вызывает второй vhost.

Как можно перенаправить пример https: //. com на https://example.com:8080 вместо http://meudomain.com , когда пользователь вводит https в адресной строке?

server {
    listen 80;
    server_name example.com;
    location '/.well-known/acme-challenge/' {
        autoindex on;
        root /var/www/certbot;
    }

    location / {
        if ($scheme = http) {
            return 301 https://example.com:8080;
        }
   }
}

server {
    listen 8080 default ssl;
    server_name example.com;
    ssl_certificate /etc/letsencrypt/live/example.com;/fullchain.pem; # managed by Certbot
    ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem; # managed by Certbot

    # logs
    error_log /var/log/nginx/example.com_error.log error;
    access_log /var/log/nginx/example.com_access.log;

    location / {
        index  index.html index.htm;
        autoindex on;
        proxy_pass http://internalserver:8080;
        auth_basic      "Restricted area";
        auth_basic_user_file /srv/example.com/.htpasswd;
        client_body_temp_path /tmp 1 2;
        client_body_buffer_size 256k;
        client_body_in_file_only off;
    }
}
0
задан 10 October 2018 в 21:21
2 ответа

Просто добавьте этот блок сервера, чтобы перенаправить все https://example.com на https://example.com:8080

server {
        listen 443 ssl;
        ssl_certificate /etc/letsencrypt/live/example.com;/fullchain.pem; # managed by Certbot
        ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem; # managed by Certbot
        return 301 https://example.com:8080$request_uri;
}
1
ответ дан 4 December 2019 в 15:49

Помните, что когда пользователь просто вводит https://example.com в адресную строку, браузер принимает порт SSL по умолчанию (порт 443). Фактически вы не обрабатываете этот порт в своей конфигурации, вам придется перенаправить с сервера, который прослушивает этот порт. Как это можно сделать здесь: Как запустить nginx SSL на нестандартном порту

0
ответ дан 4 December 2019 в 15:49

Теги

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