Я использую nginx в качестве обратного прокси-сервера, и я хотел бы перенаправить порт 3000, предоставленный через URL-адрес, на тот же порт на проходе прокси, но при попытке я всегда перенаправляю на порт 443.
Ниже представлена текущая конфигурация:
server {
listen 80 ;
listen 443 ssl;
listen 3000 ssl;
server_name example.com;
ssl_certificate /etc/ssl/certs/example.fullchain.pem;
ssl_certificate_key /etc/ssl/private/example.pem;
location / {
#auth_basic "Vous devez vous authentifier";
#auth_basic_user_file /etc/nginx/htpasswd;
if ($scheme = http) {
return 301 https://$server_name$request_uri;
}
proxy_pass http://10.10.10.10
proxy_set_header Host $http_host;
proxy_read_timeout 90;
}
location /.well-known/acme-challenge {
root /var/www/letsencrypt;
}
# ...
}
Вы знаете, как попасть на http://10.10.10.10:3000 при доступе https://example.com:3000 ?
Редактировать:
Я также пробовал эту конфигурацию, как показано ниже, и у меня все еще та же проблема.
server {
listen 80 ;
listen 443 ssl;
server_name example.com;
ssl_certificate /etc/ssl/certs/example.fullchain.pem;
ssl_certificate_key /etc/ssl/private/example.pem;
location / {
#auth_basic "Vous devez vous authentifier";
#auth_basic_user_file /etc/nginx/htpasswd;
if ($scheme = http) {
return 301 https://$server_name$request_uri;
}
proxy_pass http://10.10.10.10;
proxy_set_header Host $http_host;
proxy_read_timeout 90;
}
location /.well-known/acme-challenge {
root /var/www/letsencrypt;
}
}
server {
listen 3000 ssl;
server_name example.com;
ssl_certificate /etc/ssl/certs/example.fullchain.pem;
ssl_certificate_key /etc/ssl/private/example.pem;
location / {
proxy_pass http://10.10.10.10:3000;
proxy_set_header Host $http_host;
proxy_read_timeout 90;
}
location /.well-known/acme-challenge {
root /var/www/letsencrypt;
}
}
Ваш второй подход с двумя серверными блоками верен. Вам просто нужно удалить редирект на https (который вернет запрос на порт 443).
server {
listen 3000 ssl;
server_name example.com;
ssl_certificate /etc/ssl/certs/example.fullchain.pem;
ssl_certificate_key /etc/ssl/private/example.pem;
location / {
proxy_pass http://10.10.10.10:3000;
proxy_set_header Host $http_host;
proxy_read_timeout 90;
}
location /.well-known/acme-challenge {
root /var/www/letsencrypt;
}
}