Как упростить конфигурацию обратного прокси-сервера nginx

Я наконец-то добрался до настройки обратного прокси Nginx для обработки нескольких веб-сайтов, которые я размещаю у себя дома с тех пор, как У меня только один внешний IP-адрес и все работает, но я хочу знать, есть ли способ упростить текущую конфигурацию для одного из моих сайтов, который длиннее, чем я считаю нужным. Любой ввод приветствуется.

server {
  listen 192.168.1.176:80;
  server_name ighfdexplorers.com;
  return 301 https://www.$server_name$request_uri;
}

server {
  listen 192.168.1.176:443 ssl http2;
  server_name ighfdexplorers.com;
  return 301 https://www.$server_name$request_uri;

  ssl_certificate /etc/nginx/ssl/ighfdexplorers/base/fullchain.pem;
  ssl_certificate_key /etc/nginx/ssl/ighfdexplorers/base/privkey.pem;
}

server {
  listen 192.168.1.176:80;
  server_name www.ighfdexplorers.com;
  return 301 https://$server_name$request_uri;
}

server {
  listen 192.168.1.176:443 ssl http2;
  server_name www.ighfdexplorers.com;

  set $upstream 192.168.1.179;

  ssl_certificate /etc/nginx/ssl/ighfdexplorers/fullchain.pem;
  ssl_certificate_key /etc/nginx/ssl/ighfdexplorers/privkey.pem;

  location / {
    proxy_pass_header Authorization;
    proxy_pass https://$upstream;
    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_http_version 1.1;
    proxy_set_header Connection "";
    proxy_buffering off;
    client_max_body_size 0;
    proxy_read_timeout 36000s;
    proxy_redirect off;
    proxy_ssl_session_reuse off;
  }
}
0
задан 4 September 2017 в 01:38
1 ответ

Вы можете выполнить общее переадресацию для всех доменов, в которых нет раздела сервера, например:

server
{
  listen 80 default_server;
  listen [::]:80 default_server;

  server_name .ighfdexplorers.com;
  location /
  {
    return 301 https://$host$request_uri;
  }
}

server
{
  listen 443 ssl http2 default_server;
  listen [::]:443 ssl http2 default_server;

  server_name ighfdexplorers.com;

  if ($host != $server_name)
  {
    return 301 https://$server_name$request_uri;
  }

  ... ssl directives, etc... 
}

Использование имя_сервера с обработкой . сообщает nginx, чтобы он соответствовал любому префиксу поддомена или ни одному. Поскольку это сервер по умолчанию, он также будет соответствовать всему остальному, возможно, вы этого не захотите.

Второй сервер снова является сервером по умолчанию, но для HTTPS, поэтому он будет использоваться для всего, что не соответствует. Если затем мы сравниваем запрошенный $ host с настроенным $ server_name , и они не совпадают, мы перенаправляем на правильное имя. Таким образом, *. Ighfdexplorers.com всегда будет перенаправлять на ighfdexplorers.com , если только не существует сервера для этого конкретного имени.

0
ответ дан 24 November 2019 в 03:54

Теги

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