nginx 多域名配置

sucanber 发布于 2018/05/29 14:42
阅读 3K+
收藏 5

环境ubuntu16.04/nginx1.10/php7.0,

要配2个域名分别对应2个php项目(都是80端口),

在site-enabled ,目录下分别新建文件

www.a.com 和 www.b.com 2个独立文件,配置分别如下

server {
    listen 80;

    root /www/a;

    index index.php index.html;

    server_name www.a.com a.com ;

    location / {
        # First attempt to serve request as file, then
        # as directory, then fall back to displaying a 404.
        try_files $uri $uri/ =404;
    }

    location ~ \.php$ {
        root           /www/a;
        fastcgi_pass   127.0.0.1:9000;
        fastcgi_index  index.php;
        fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
        include        fastcgi_params;
    }
}

 

======

server {
    listen 80;

    root /www/b;

    index index.php index.html;

    server_name www.b.com b.com ;

    location / {
        # First attempt to serve request as file, then
        # as directory, then fall back to displaying a 404.
        try_files $uri $uri/ =404;
    }

    location ~ \.php$ {
        root           /www/b;
        fastcgi_pass   127.0.0.1:9000;
        fastcgi_index  index.php;
        fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
        include        fastcgi_params;
    }
}

 

重启nginx

访问www.a.com 返回502错误, 访问www.b.com 页面无响应

请问怎么回事?

加载中
1
goodman_fz
goodman_fz

可以通过反向代理方式来进行一个局域网内的多域名映射,以下为我自己服务器上的多域名配置,供参考:

server {
    listen       80;
    server_name  a.test.cn;

    access_log /www/test/a.test.cn.log;

    location / {
        proxy_set_header Host $http_host;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Real-Ip $remote_addr;
        proxy_set_header X-NginX-Proxy true;
        proxy_pass http://127.0.0.1:81;
        proxy_redirect off;
    }
}

server {
    listen       80;
    server_name  b.test.cn;

    access_log /www/test/b.test.cn.log;

    location / {
        proxy_set_header Host $http_host;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Real-Ip $remote_addr;
        proxy_set_header X-NginX-Proxy true;
        proxy_pass http://127.0.0.1:83;
        proxy_redirect off;
    }
}

0
sucanber
sucanber

有人吗?

0
careyjike
careyjike

你的php服务起了吗?你的php是使用的php-fpm还是什么管理?根据你的配置文件来看你的php应该监听了9000端口,检查9000端口是否监听

sucanber
sucanber
回复 @careyjike : 就是没有错误信息,页面空白页无响应
careyjike
careyjike
回复 @sucanber :有相关错误信息吗?日志和访问b.com响应信息贴一下
sucanber
sucanber
启动php-fpm 后,www.a.com 能正常访问了,但是www.b.com 无法访问,应该是配置哪个地方出错了?
0
LootanHu
LootanHu

location ~ \.(php|phar)(/.*)?$ {

        fastcgi_split_path_info ^(.+\.(?:php|phar))(/.*)$;

        try_files $uri  =404;
        fastcgi_index   index.php;
        include         fastcgi_params;
        fastcgi_param   SCRIPT_FILENAME $document_root$fastcgi_script_name;
        fastcgi_param   PATH_INFO       $fastcgi_path_info;
        fastcgi_pass    127.0.0.1:9000;;
        fastcgi_intercept_errors on;
}

 

标准的 php proxy_pass 应该这样。location / 可以不要。你试一试。

0
大大大丶

应该是没配置代理,直接百度好了,我不是专业的

0
sucanber
sucanber

引用来自“goodman_fz”的评论

可以通过反向代理方式来进行一个局域网内的多域名映射,以下为我自己服务器上的多域名配置,供参考:

server {
    listen       80;
    server_name  a.test.cn;

    access_log /www/test/a.test.cn.log;

    location / {
        proxy_set_header Host $http_host;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Real-Ip $remote_addr;
        proxy_set_header X-NginX-Proxy true;
        proxy_pass http://127.0.0.1:81;
        proxy_redirect off;
    }
}

server {
    listen       80;
    server_name  b.test.cn;

    access_log /www/test/b.test.cn.log;

    location / {
        proxy_set_header Host $http_host;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Real-Ip $remote_addr;
        proxy_set_header X-NginX-Proxy true;
        proxy_pass http://127.0.0.1:83;
        proxy_redirect off;
    }
}

你好,按照你的修改后,2个域名访问正常打开,但是都是访问的的www.a.com 的内容。。。,www.b.com 并没有访问到相应的项目内容

goodman_fz
goodman_fz
要代理到你自己服务器内网的不同端口或不同ip去。你可以把配置贴出来看下
0
A梦多啦
A梦多啦
配置文件是以.conf结尾。
返回顶部
顶部