nginx https автоматически перенаправляет на определенный порт
Я не уверен, что тема возобновляет мой вопрос правильно, но я постараюсь объяснить это.
У меня есть конфигурация ниже на моем сервере, этот сервер имеет 2 vhosts: example.com и meudomain.com
Первый vhost должен прослушивать 8080 (https), и, как вы можете видеть, я использую перенаправление с http > https 8080. Второй прослушивает 80.
Моя проблема в том, что если пользователь вводит https в адресную строку вместо http, он вызывает второй vhost.
Как перенаправить https://example.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;
}
}
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;
}
Помните, что когда пользователь просто вводит https://example.com/ в адресную строку, порт SSL по умолчанию принимается браузером (порт 443). Вы фактически не обрабатываете этот порт в своей конфигурации, вам придется перенаправить с сервера, прослушивающего этот порт. Как вы можете сделать это здесь: Как запустить nginx SSL на нестандартном порту