2016-05-03 6 views
1

ドメインとSSL/rootの場所とは別に2つのnginx仮想ホストがあります。彼らは、次のようになります。NginxがSSLで間違ったルートを提供しています

/etc/nginx/sites-available/domain1.co.uk

server { 
    listen 80; 
    server_name domain1.co.uk; 
    rewrite ^/(.*) https://domain1.co.uk/$1 permanent; 
} 

server { 
    listen    80; 
    listen    443 ssl; 
    server_name   www.domain1.co.uk; 
    ssl_certificate /etc/nginx/ssl/domain1.chained.crt; 
    ssl_certificate_key /etc/nginx/ssl/private/domain1.key;  
    return 301 $scheme://domain1.co.uk$request_uri; 
} 

server { 
    listen 443 ssl; 

    server_name domain1.co.uk; 

    root  /var/www/domain1.co.uk/public_html; 
    ssl_certificate /etc/nginx/ssl/domain1.chained.crt; 
    ssl_certificate_key /etc/nginx/ssl/private/domain1.key; 
    ssl_protocols TLSv1 TLSv1.1 TLSv1.2; 
    ssl_prefer_server_ciphers on; 
    ssl_ciphers 'EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH'; 

    location/{ 
     try_files $uri @prerender; 
    } 

    location /blog/ { 
    index index.php; 
    try_files $uri $uri/ /blog/index.php?$args; 
    } 

    # pass the PHP scripts to FastCGI server listening on the php-fpm socket 
    location ~ \.php$ { 
      try_files $uri =404; 
      fastcgi_pass unix:/var/run/php5-fpm.sock; 
      fastcgi_index index.php; 
      fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; 
      include fastcgi_params; 

    } 

    location ~ ^/api { 
     try_files $request_uri $request_uri/ /api/index.php?$query_string; 
    } 

    location @prerender { 
     proxy_set_header X-Prerender-Token 4398455894u5ugjgfgfj; 
     proxy_http_version 1.1; 
     proxy_set_header Upgrade $http_upgrade; 
     proxy_set_header Connection 'upgrade'; 
     proxy_set_header Host $host; 
     proxy_cache_bypass $http_upgrade; 

     set $prerender 0; 
     if ($http_user_agent ~* "googlebot|yahoo|bingbot|baiduspider|yandex|yeti|yodaobot|gigabot|ia_archiver|facebookexternalhit|twitterbot|developers\.google\.com") { 
      set $prerender 1; 
     } 
     if ($args ~ "_escaped_fragment_|prerender=1") { 
      set $prerender 1; 
     } 
     if ($http_user_agent ~ "Prerender") { 
      set $prerender 0; 
     } 

     if ($prerender = 1) { 
      rewrite .* /$scheme://$host$request_uri? break; 
      #proxy_pass http://localhost:3000; 
      proxy_pass http://service.prerender.io; 
     } 
     if ($prerender = 0) { 
      proxy_pass http://127.0.0.1:3000; 
     } 
    } 

} 

/etc/nginx/sites-available/domain2.co.uk

server { 
    listen 80; 
    server_name domain2.co.uk; 
    rewrite ^/(.*) https://domain2.co.uk/$1 permanent; 
} 

server { 
    listen    80; 
    listen    443 ssl; 
    server_name   www.domain2.co.uk; 
    ssl_certificate /etc/nginx/ssl/domain2.chained.crt; 
    ssl_certificate_key /etc/nginx/ssl/private/domain2.key;  
    return 301 $scheme://domain2.co.uk$request_uri; 
} 

server { 
    listen 443 ssl; 

    server_name domain2.co.uk; 

    root  /var/www/domain2.co.uk/public_html; 
    ssl_certificate /etc/nginx/ssl/domain2.chained.crt; 
    ssl_certificate_key /etc/nginx/ssl/private/domain2.key; 
    ssl_protocols TLSv1 TLSv1.1 TLSv1.2; 
    ssl_prefer_server_ciphers on; 
    ssl_ciphers 'EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH'; 

    location/{ 
     try_files $uri @prerender; 
    } 

    location /blog/ { 
    index index.php; 
    try_files $uri $uri/ /blog/index.php?$args; 
    } 

    # pass the PHP scripts to FastCGI server listening on the php-fpm socket 
    location ~ \.php$ { 
      try_files $uri =404; 
      fastcgi_pass unix:/var/run/php5-fpm.sock; 
      fastcgi_index index.php; 
      fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; 
      include fastcgi_params; 

    } 

    location ~ ^/api { 
     try_files $request_uri $request_uri/ /api/index.php?$query_string; 
    } 

    location @prerender { 
     proxy_set_header X-Prerender-Token 4398455894u5ugjgfgfj; 
     proxy_http_version 1.1; 
     proxy_set_header Upgrade $http_upgrade; 
     proxy_set_header Connection 'upgrade'; 
     proxy_set_header Host $host; 
     proxy_cache_bypass $http_upgrade; 

     set $prerender 0; 
     if ($http_user_agent ~* "googlebot|yahoo|bingbot|baiduspider|yandex|yeti|yodaobot|gigabot|ia_archiver|facebookexternalhit|twitterbot|developers\.google\.com") { 
      set $prerender 1; 
     } 
     if ($args ~ "_escaped_fragment_|prerender=1") { 
      set $prerender 1; 
     } 
     if ($http_user_agent ~ "Prerender") { 
      set $prerender 0; 
     } 

     if ($prerender = 1) { 
      rewrite .* /$scheme://$host$request_uri? break; 
      #proxy_pass http://localhost:3000; 
      proxy_pass http://service.prerender.io; 
     } 
     if ($prerender = 0) { 
      proxy_pass http://127.0.0.1:3000; 
     } 
    } 

} 

domain1.co.ukにアクセスすると、期待どおりに動作し、www以外のhttps URLにリダイレクトされます。私がdomain2.co.ukにアクセスすると、正しいSSL証明書を提供しますが、domain2 URLにdomain1サイトが表示されています。

私は同様に、デフォルトのサーバーのブロックを持っている:

server { 
    listen 80 default_server; 
    return 444; 
} 

server { 
    listen 443 default_server; 
    ssl on; 
    ssl_certificate /etc/ssl/certs/ssl-cert-snakeoil.pem; 
    ssl_certificate_key /etc/ssl/private/ssl-cert-snakeoil.key; 
    return 444; 
} 

domain2.co.ukが実際に/var/www/domain2.co.uk/public_html代わりのドメイン1からファイルを提供するように、私はこれを設定するにはどうすればよいですか?

答えて

1

Ah!ごめんなさい!私はあなたがdomain2.co.ukを持っていないと思った。あなたは "domain2.co.uk"サーバのルートとして "/var/www/domain2.co.uk/public_html"を持っていると思っています。 /etc/nginx/sites-available/domain2.co.ukファイルが含まれていない場合は、nginxを作成しましたか?基本的には、/etc/nginx/nginx.confの "インクルード"ディレクティブをチェックして、シンボリックリンクファイル "/etc/nginx/sites-enabled/domain2.co.uk"を作成し、それを " /etc/nginx/sites-available/domain1.co.uk "と入力して有効にします。

+0

これはまさに私が持っているものです。主なコードブロックは、 '/ etc/nginx/sites-available/domain1.co.uk'と'/etc/nginx/sites-available/domain2.co.uk'の2つのドメインの2つのファイルにあるものです。 – Ian

+0

答えを更新しました! – RaviTezu

+0

私はシンボリックリンクを持っていますが、nginx.confには 'include /etc/nginx/conf.d/ * conf;'と 'include/etc/nginx/sites-enabled/*;'があります。私はちょっと困惑している:/ – Ian

関連する問題