2017-09-15 64 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