nginx HTTPS, работающий с той же конфигурацией, что и HTTP

Есть ли способ поделиться конфигурационными директивами по двум блокам nginx server {}? Я бы хотел избежать дублирования правил, так как HTTPS и HTTP-контент моего сайта обслуживаются с той же конфигурацией.

В настоящее время это выглядит так:

server {
  слушайте 80;
  ...
}

сервер {
  слушайте 443;

  ssl on; # и т.д.
  ...
}

Могу ли я сделать что-то по строкам:

server {
  слушайте 80, 443;
  ...

  if (port == 443) {
    ssl on; #и т.д
  }
}
168 голосов | спросил ceejayoz 21 Maypm09 2009, 20:18:49

5 ответов


231

Вы можете объединить это в один серверный блок следующим образом:

server {
    слушайте 80;
    прослушать 443 default_server ssl;

    # другие директивы
}

Официальное руководство

ответил Jauder Ho 21 Maypm09 2009, 22:54:08
77

Чтобы прояснить принятый ответ, вам нужно опустить

SSL on;

и вам просто нужно следующее для версии nginx после 0.8.21

прослушать 443 ssl;

Ссылка:

Nginx Docs - настройка одного HTTP /HTTPS-сервера

ответил Sean Tan 13 J0000006Europe/Moscow 2012, 10:19:11
24

Я не знаю, как вы это предлагаете, но, безусловно, легко и удобно.

Переместите общие настройки сервера в отдельный файл, то есть «serverFoo.conf», а затем включите в отдельный блок server {}, например:

server {
    слушайте 80;
    include serverFoo.conf;
}
сервер {
    слушайте 443 ssl;
    include serverFoo.conf;
}
ответил dwc 21 Maypm09 2009, 22:38:05
7

Развернув на уже полезные ответы, вот более полный пример:

server {

    # Слушайте порт 80 и 443
    # на обоих IPv4 и IPv6
    слушайте 80;
    listen [::]: 80 ipv6only = on;
    слушайте 443 ssl;
    listen [::]: 443 ipv6only = on ssl;

    # Установить папку веб-сайта
    root /path /to /your /website;

    # Включить SSL
    ssl_certificate your-cert.pem;
    ssl_certificate_key your-cert.key;
    ssl_session_timeout 5m;
    ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
    ssl_ciphers ALL:! ADH:! EXPORT56: RC4 + RSA: + HIGH: + MEDIUM: + LOW: + SSLv3: + EXP;
    ssl_prefer_server_ciphers on;
}
ответил Jonathan 10 Maypm13 2013, 21:48:53
4

Чтобы добавить к сообщению Игоря /Яудера, если вы слушаете определенный IP-адрес, вы можете использовать:

слушать xxx.xxx.xxx.xxx;
слушать xxx.xxx.xxx.xxx:443 по умолчанию ssl;
ответил Matt Bostock 25 FebruaryEurope/MoscowbFri, 25 Feb 2011 16:11:04 +0300000000pmFri, 25 Feb 2011 16:11:04 +030011 2011, 16:11:04

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

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132