我目前正在测试 nginx,并通过将每个虚拟主机的配置放在名为 的文件夹中的自己的文件中来设置一些虚拟主机sites-enabled
。
然后我要求 nginx 使用以下命令加载所有这些配置文件:
include C:/nginx/sites-enabled/*.conf;
这是我当前的配置:
http {
server_names_hash_bucket_size 64;
include mime.types;
include C:/nginx/sites-enabled/*.conf;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
server {
listen 80;
root C:/www-root;
#charset koi8-r;
#access_log logs/host.access.log main;
location / {
index index.html index.htm index.php;
}
# redirect server error pages to the static page /50x.html
#
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
location ~ \.php$ {
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
}
server{
server_name localhost;
}
}
这是虚拟主机的配置之一:
server {
server_name testsubdomain.testdomain.com
root C:/www-root/testsubdomain.testdomain.com;
}
问题是,对于 testsubdomain.testdomain.com,除非我为其定义了带有 fastcgi 参数的位置块,否则我无法运行 php 脚本。
我希望能够为该服务器上的所有托管网站启用 PHP(无需添加带有 fastcgi 参数的 PHP 位置块)以实现可维护性。这样,如果我需要更改 PHP 的任何 fastcgi 值,我只需在一个位置进行更改即可。
这对于 nginx 来说可能吗?如果可以,该怎么做?
答案1
我通常在 Nginx 配置文件夹内的 conf.d 文件夹中创建一个“全局”文件夹。然后创建一个 php.conf 文件:
location ~ \.php$ {
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
然后我只需将所有配置文件包含在虚拟主机中:
include C:/nginx/conf.d/global/*.conf