2017-09-15 96 views
0

我有一個項目,我希望每個語言都有一個域。所以我的網站指向同一個目錄,但由於某種原因,我的一個域正被重定向到另一個域。nginx兩個站點一個目錄

澄清。 example.com example.org

example.org指向與example.com相同的目錄。

當我訪問example.org,我重定向到example.com

我不知道問題是我使用LetsEncrypt SSL在兩個領域。

任何線索?

這裏是我的nginx的文件

example.com

# FORGE CONFIG (DOT NOT REMOVE!) 
include forge-conf/example.com/before/*; 

server { 
    listen 443 ssl http2; 
    listen [::]:443 ssl http2; 
    server_name example.com; 
    root /home/forge/example.com; 

    # FORGE SSL (DO NOT REMOVE!) 
    ssl_certificate /etc/nginx/ssl/example.com/xxx/server.crt; 
    ssl_certificate_key /etc/nginx/ssl/example.com/xxx/server.key; 

    ssl_protocols TLSv1 TLSv1.1 TLSv1.2; 
    ssl_ciphers 'XXXXXX-$' 
    ssl_prefer_server_ciphers on; 
    ssl_dhparam /etc/nginx/dhparams.pem; 

    add_header X-Frame-Options "SAMEORIGIN"; 
    add_header X-XSS-Protection "1; mode=block"; 
    add_header X-Content-Type-Options "nosniff"; 

    index index.html index.htm index.php; 

    charset utf-8; 

    # FORGE CONFIG (DOT NOT REMOVE!) 
    include forge-conf/example.com/server/*; 

    location/{ 
     try_files $uri $uri/ /index.php?$query_string; 
    } 
    location ~ /(public/mail-signature/.*)$ { 

    } 

    location = /favicon.ico { access_log off; log_not_found off; } 
    location = /robots.txt { access_log off; log_not_found off; } 

    access_log off; 
    error_log /var/log/nginx/example.com-error.log error; 

    error_page 404 /index.php; 

    location ~ \.php$ { 
     fastcgi_split_path_info ^(.+\.php)(/.+)$; 
     fastcgi_pass unix:/var/run/php/php7.1-fpm.sock; 
     fastcgi_index index.php; 
     include fastcgi_params; 
    } 

    location ~ /\.ht { 
     deny all; 
    } 
} 

# FORGE CONFIG (DOT NOT REMOVE!) 
include forge-conf/example.com/after/*; 

example.org

# FORGE CONFIG (DOT NOT REMOVE!) 
include forge-conf/example.org/before/*; 

server { 
    listen 80; 
    listen [::]:80; 
    server_name example.org; 
    root /home/forge/example.com; 

    # FORGE SSL (DO NOT REMOVE!) 
    # ssl_certificate; 
    # ssl_certificate_key; 

    ssl_protocols TLSv1 TLSv1.1 TLSv1.2; 
    ssl_ciphers 'xxxxxxx-$' 
    ssl_prefer_server_ciphers on; 
    ssl_dhparam /etc/nginx/dhparams.pem; 

    add_header X-Frame-Options "SAMEORIGIN"; 
    add_header X-XSS-Protection "1; mode=block"; 
    add_header X-Content-Type-Options "nosniff"; 

    index index.html index.htm index.php; 

    charset utf-8; 

    # FORGE CONFIG (DOT NOT REMOVE!) 
    include forge-conf/example.org/server/*; 

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

    location = /favicon.ico { access_log off; log_not_found off; } 
    location = /robots.txt { access_log off; log_not_found off; } 

    access_log off; 
    error_log /var/log/nginx/example.org-error.log error; 

    error_page 404 /index.php; 

    location ~ \.php$ { 
     fastcgi_split_path_info ^(.+\.php)(/.+)$; 
     fastcgi_pass unix:/var/run/php/php7.1-fpm.sock; 
     fastcgi_index index.php; 
     include fastcgi_params; 
    } 

    location ~ /\.(?!well-known).* { 
     deny all; 
    } 
} 

# FORGE CONFIG (DOT NOT REMOVE!) 
include forge-conf/example.org/after/*; 
+0

什麼都不會重定向你。或者其中一些包含你沒有顯示的文件(你包括'/ *'幾個地方),或者它是php重定向。 'curl -v --location example.org 2>&1 |是什麼? pastebinit'說? – hanshenrik

+1

第一個虛擬主機只偵聽443,第二個只偵聽80 ... – Narf

+0

運行'nginx -T'並將生成的配置粘貼到您的問題或pastebin.com鏈接 –

回答

0

我會建議使用您的文檔根目錄更不可知的名字,否則很容易爲了弄糊塗,你可以使用類似的東西:

/home/forge/site-example 

後來嘗試用curl診斷您的流程,例如:

curl -I -L https://google.com 

選項-I將只讀取頭

和期權-L將遵循重定向

例如,對於網站http://immortal.run

$ curl -I -L http://immortal.run 
HTTP/1.1 301 Moved Permanently 
Date: Fri, 15 Sep 2017 14:58:43 GMT 
... 

HTTP/1.1 200 OK 
Date: Fri, 15 Sep 2017 14:58:43 GMT 
Content-Type: text/html; charset=utf-8 
... 

注意:

HTTP/1.1 301 Moved Permanently 

這可能是您的設置正在發生的事情。

+0

curl:(51)SSL:證書主題名稱example.com)與目標主機名「example.com」不匹配 –

+0

您必須爲每個域使用一個證書 – nbari