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

Правильно ли определять два прослушивания (80 и 443) на одном сервере nginx?

Правильно ли определять оба listen (80 и 443) под тем же server {} как это ?

Другой метод - определить два отдельных server{} для каждого порта, который, как я знаю, будет в порядке.

server {

    listen       80 default_server;
    server_name  example.com;
    root         /usr/share/nginx/html;

    location / {

    }


    listen example.com:443 ssl; # <<< !!!

    ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem; 
    ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem; 
    include /etc/letsencrypt/options-ssl-nginx.conf; 
    ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem;         
}

Разрешено прослушивать несколько портов одного и того же server блок, но это зависит от вашей цели, если вы хотите это сделать.

Лично я использую следующую настройку, когда у меня есть следующий набор доменов и я хочу использовать https://www.example.com в качестве основного домена:

http://example.com
https://example.com
http://www.example.com
https://www.example.com

server блок для example.com порты 80 и 443:

server {
    server_name example.com;
    listen 80;
    listen 443 ssl http2;

    ssl_certificate ...;
    ssl_certificate_key ...;

    return 301 https://www.example.com$request_uri;
}

это server блок перенаправляет все запросы, поступающие в http://example.com или https://example.com к https://www.example.com.

Тогда всего два блока для http://www.example.com и https://www.example.com:

server {
    listen 80;

    server_name www.example.com;

    return 301 https://www.example.com$request_uri;
}

server {
    listen 443 ssl;

    server_name www.example.com;

    ssl_certificate ...;
    ssl_certificate_key ...;

    ... rest of config ...
}

Насколько я помню, да. Об этом также говорится в документации (ссылка ниже):

Единый сервер HTTP / HTTPS

Можно настроить один сервер, который будет обрабатывать запросы HTTP и HTTPS:

server {
   listen              80;
   listen              443 ssl;
   server_name         www.example.com;
   ssl_certificate     www.example.com.crt;
   ssl_certificate_key www.example.com.key;
   ...
}

src: https://nginx.org/en/docs/http/configuring_https_servers.html