Два веб-сайта с SSL на NGINX. Последовательность и перенаправление

У меня есть два веб-сайта с SSL на NGINX.

Когда

curl -I https://www.1111.com answer: https://1111.com

Но когда

curl -I https://www.2222.com answer: https://1111.com
curl -I https://2222.com answer https://2222.com

в nginx.conf я пытаюсь изменить последовательность / import * .conf, и когда я устанавливаю 2222.com перед 1111.com>, отвечаю, меняя противоположное.

1111.conf

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

server {
    listen 443 ssl http2;
    server_name 1111.com;
    root /usr/share/nginx/1111.com;
    index index.php;
...

2222.conf похож на

Как я могу перенаправить все https: // www. * И http: // www. * На этом веб-сайте, а не на другом?

2
задан 2 February 2017 в 11:21
2 ответа

Ага! Правый конфиг:

server {
  listen   80;
  server_name site.ru www.site.ru;
  rewrite  ^(.*) https://$server_name$1 permanent;
}
server {
  listen   443   ssl http2;
  include ssl/ssl_site.ru;
  server_name  www.site.ru;
  rewrite ^(.*) https://site.ru$1 permanent;
}
server {
  listen   443   ssl http2;
  server_name site.ru;
  include ssl/ssl_site.ru;

... other config string ...
1
ответ дан 3 December 2019 в 14:15

Это маленький хитрый человек, но, конечно, вы можете это сделать.

map $http_host $new {
  'www.abc.com' '1';
  'www.xyz.com' '2';
}

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

    if ($http_x_forwarded_proto != 'https') {
          rewrite ^(.*) https://$host$1 redirect;
    }
}

server {
  if ($new != '1') {
        server_name www.xyz.com;

        listen 443 ssl default_server;
        listen [::]:443 ssl default_server;

        ssl_certificate  /etc/ssl/certs/s2.pem;
        ssl_certificate_key /etc/ssl/certs/s2.key;

        root /var/www/html/site2;

        index index.html index.htm index.nginx-debian.html;

        location / {

    }
  }

  if ($new != '2') {
        server_name www.abc.com;

        listen 443 ssl default_server;
        listen [::]:443 ssl default_server;

        ssl_certificate  /etc/ssl/certs/s1.pem;
        ssl_certificate_key /etc/ssl/certs/s1.key;

        root /var/www/html/site1;

        index index.html index.htm index.nginx-debian.html;

        location / {

    }
  }
}

Это может быть точный ответ для получения дополнительной информации и R&C чтения модулей карты nginx

-1
ответ дан 3 December 2019 в 14:15

Теги

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