如果在一个Nginx服务器想配置多个不同域名网站,只需要配置多个不同的 server,一个server 一个文件,放到/etc/nginx/sites-available/目录下,然后在/etc/nginx/sites-enabled/ 下,将需要发布的网站做个软链接即可。用软链接比直接放个文件到/etc/nginx/sites-enabled/下的好处是,当临时不需要时,只要删除软链接,原配置文件还在,可以随时恢复。
如果没有多个域名,要配置多个PHP应用,那只能将配置文件合并在一个Server里了。这时,如果使用 一个根目录的原始方式,从一个应用很容易就跑到另一个应用里,不同应用之间就容易相互影响。最好还是使用多个根目录,比如,如下根目录下已经有一个PHP应用
root /var/www/default;
index index.php index.html;
server_name mydomain;
location / {
# First attempt to serve request as file, then
# as directory, then fall back to displaying a 404.
try_files $uri $uri/ =404;
}
# pass PHP scripts to FastCGI server
#
location ~ \.php$ {
include snippets/fastcgi-php.conf;
# With php-fpm (or other unix sockets):
fastcgi_pass unix:/run/php/php8.1-fpm.sock;
}
要使用 Location 参数设置 一个新的路径使用另一个根目录。
location /newapp {
root /var/www/newapp;
}
这样 /newapp 这个路径将使用新的根目录。但是,后续工作中,容易发生一个错误,就是将应用直接放到了/var/www/newapp下。这时,浏览器访问 /newapp 这个路径就出现404错误。由于/var/www/newapp 是根目录,因此 /newapp 路径实际访问了 /var/www/newapp/newapp 目录,而你将应用部署在了 /var/www/newapp ,那么 Nginx 在 /var/www/newapp/newapp 下找不到文件,自然就出现404了。只要把应用部署到 /var/www/newapp/newapp就可以了。
另外,原来的PHP设置,是针对缺省的根路径“/”的。新的路径 /newapp 下,由于使用新的根目录,原来的PHP配置自然就不起作用了。这时,还需要为这个新的 /newapp 路径,设置另一套 PHP配置
location ~ ^/newapp/.+\.php$ {
root /var/www/newapp;
include snippets/fastcgi-php.conf;
# With php-fpm (or other unix sockets):
fastcgi_pass unix:/run/php/php8.1-fpm.sock;
}
配置基本与原来的配置一致,但是一定要注意再加一个 root 选项,确保这个PHP配置也是服务于 这个新的根目录。
现在可以重启Nginx了。