我的 Web 服务器上运行着一个 nginx 服务器。
我想实现以下目标:
- example.com + www.example.com -> /my/web/dir/www
- pma.example.com-> /my/web/dir/pma
第一点没有问题,一切正常。对于第二点,我编辑了 /etc/nginx/sites-enabled/default 并复制了现有的服务器块,为 pma.example.com 创建一个新服务器块。
server {
listen 80;
root /usr/share/nginx/www;
index index.php index.html index.htm;
server_name example.com www.example.com;
location / {
try_files $uri $uri/ /index.html;
}
location ~ (?U)\.php(/.*$|$) {
gzip off;
#^((?U).*/echo)(/?.+)$;
fastcgi_split_path_info ^((?U).+\.php)(/.+)?$;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param PATH_INFO $fastcgi_path_info;
#try_files $fastcgi_script_name =404;
if (!-e $document_root$fastcgi_script_name) {
return 404;
}
fastcgi_pass unix:/var/run/php5-fpm.sock;
fastcgi_index index.php;
}
}
server {
listen 80;
root /usr/share/nginx/pma;
index index.php index.html index.htm;
server_name pma.example.com;
location ^~ /{
auth_basic "Restricted Area";
auth_basic_user_file conf/pma_htpasswd;
try_files $uri $uri/ /index.html;
gzip off;
#^((?U).*/echo)(/?.+)$;
fastcgi_split_path_info ^((?U).+\.php)(/.+)?$;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param PATH_INFO $fastcgi_path_info;
#try_files $fastcgi_script_name =404;
if (!-e $document_root$fastcgi_script_name) {
return 404;
}
fastcgi_pass unix:/var/run/php5-fpm.sock;
fastcgi_index index.php;
}
}
第一个仍然运行良好,PHP 也运行良好。
第二个不工作了。
我在 pma 目录中创建了一个 index.php 文件来测试设置:
<?php
phpinfo();
?>
不幸的是,如果我在浏览器(最新版 Chrome)中输入 pma.example.com,它只会下载文件。我对网络服务器不是很熟悉,所以我想请你帮忙。我该如何让它工作,以便在第二个服务器块上使用 PHP?我在这里做错了什么?
答案1
我按照 digitalocean.com 上的教程解决了这个问题: 如何使用 Nginx 配置单个和多个 WordPress 站点设置
我省略了 Wordpress 特定的部分,现在它可以正常工作。