Объединить два сервера nginx - PullRequest
       26

Объединить два сервера nginx

0 голосов
/ 28 декабря 2018

Эта конфигурация nginx должна перенаправлять

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

на https://example.com

server {
  server_name example.com;
  root {:siteRoot};  
  listen 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;
  index index.html;
}

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

server {
  server_name www.example.com;
  listen 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;
  return 301 https://example.com$request_uri;
}

Она отлично работает, но можно ли как-то объединить ее, чтобы избежать дублирования кода?

1 Ответ

0 голосов
/ 28 декабря 2018
server {
  server_name www.example.com example.com;
  root {:siteRoot};  
  listen 443 ssl;
  listen 80;
  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;

  if ($scheme = http) {
  return 301 https://example.com$request_uri;
  }

  if ($host = 'www.example.com') {
  return 301 https://example.com$request_uri;
  }
    index index.html;

}

Как я уже прокомментировал, мне нравится разделять на серверах свои разные опции в nginx, так как я думаю, что это не "код".Но я думаю, что то, что я только что написал, должно работать для вас, если вы хотите, чтобы все это было на одном сервере.Я настраиваю виртуальный сервер, чтобы проверить, работает ли написанное «если», как задумано, так как концепция верна, но мне нужно подробно проверить код.

...