debian 8上的nginx:有和没有php的多个位置

时间:2017-03-15 23:13:03

标签: php nginx debian

我正在使用PHP7和nginx 1.11.10处理debian 8。我拥有一个VPS和一个域名。

我尝试做的事情似乎非常简单:我有2个网站通过nginx绑定到我的域名。

我们假设一个在/var/www/web1下,另一个在/var/www/web2下。第一个是ng2 app,第二个需要php。

我的问题是我无法使PHP-FPM正常工作,我总是遇到502:Bad Gateway问题(already checked this)。

我认为有两种解决方法:使用子域和使用子位置。

使用位置

这是我尝试过的其中一个:

server {
    listen 80;


    root /var/www/web1;
    index  index.html index.php index.htm;

    # static js / html / css files
    location / {
        #root /var/www/lazycoding.io;
        #index  index.html index.htm;
    }

    # needs PHP
    location /web2 {
        alias /var/www/web2;
        #root /var/www/web2;
        #index  index.php index.html index.htm;

        include /etc/nginx/fastcgi_params;
        fastcgi_pass unix:/run/php/php7.0-fpm.sock;

        #fastcgi_pass   127.0.0.1:9000;
        #include        fastcgi_params;

        fastcgi_index  index.php;
        fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;
    }
}

我似乎最好只在root中指定location,但这不起作用。这就是我目前正在尝试使用alias的原因。 php-fpm套接字的路径是正确的,权限似乎也是正确的:

> ls -lFa /run/php
total 4
drwxr-xr-x  2 www-data www-data  80 Mar 15 21:35 ./
drwxr-xr-x 21 root     root     760 Mar 15 23:41 ../
-rw-r--r--  1 root     root       5 Mar 15 21:35 php7.0-fpm.pid
srw-rw----  1 www-data www-data   0 Mar 15 21:35 php7.0-fpm.sock=

使用子域名

另一种方式(更性感)是使用子域名。

  • mydomain.com 重定向到web1
  • sub.mydomain.com 重定向到web2(使用php)

在这个配置中,似乎我需要两个服务器块,每个服务器块都有一个location /,并且先前已经设置了属性。

在此配置中,只有 mydomain.com 会响应,而两个子域都会返回404错误。

在这两种情况下,nginx和php-fpm服务都运行良好。此外,我总是使用nginx -t测试nginx的配置,并在更改时重新启动服务。

我对nginx /网络服务器配置没有经验,我不知道哪种方式最好。

我正在重新编写我的旧配置文件,以便为此帖添加更多详细信息,但可能存在一些重大错误。

1 个答案:

答案 0 :(得分:0)

您要做的是基于命名的虚拟主机,其中您有2个共享相同IP地址和端口的域。以下是如何在nginx配置中进行设置的示例:

server {
    listen       80;
    server_name  mydomain.com;

    location / {
        root   /var/www/mydomain.com/public_html/;
        index  index.html index.htm;
    }
}

server {
    listen       80;
    server_name  sub.mydomain.com;

    location / {
        root   /var/www/sub.mydomain.com/public_html/;
        index  index.html index.htm;
    }
}

然后你需要设置 php-fpm 然后配置服务器来使用它来处理php请求。