我正在使用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=
另一种方式(更性感)是使用子域名。
在这个配置中,似乎我需要两个服务器块,每个服务器块都有一个location /
,并且先前已经设置了属性。
在此配置中,只有 mydomain.com 会响应,而两个子域都会返回404错误。
在这两种情况下,nginx和php-fpm服务都运行良好。此外,我总是使用nginx -t
测试nginx的配置,并在更改时重新启动服务。
我对nginx /网络服务器配置没有经验,我不知道哪种方式最好。
我正在重新编写我的旧配置文件,以便为此帖添加更多详细信息,但可能存在一些重大错误。
答案 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请求。