我的vps(Ubuntu+Nginx+Mariadb+Wordpress)之前支持两个站点,现在想再增加一个站点支持,可是已经忘记了之前是如何配置的。
必应了一下(现在很少百度了,本想谷歌又用不了,哎...why?) 得到的答案是需要操作如下两个目录:
/etc/nginx/sites-available/
/etc/nginx/sites-enabled/
一个是有效的网站配置文件目录,一个是启用。
首先在/etc/nginx/sites-available/创建该站点的配置文件:
server {
listen 80;
server_name example.com www.example.com;
root /var/www/example.com/public_html;
index index.html;
access_log /var/log/nginx/example.com.access.log;
error_log /var/log/nginx/example.com.error.log;
}
server_name:应与此服务器块配置匹配的域。
root:Nginx将在其中提供域文件的目录。
access_log,error_log:指定日志文件的位置。
可以将配置文件命名为任意名称,但是通常最好使用域名。
然后,要启用新的服务器配置文件,需要创建一个从文件到sites-enabled目录的符号链接,Nginx在启动过程中会读取该链接,命令如下:
sudo ln -s /etc/nginx/sites-available/example.com /etc/nginx/sites-enabled/
测试Nginx配置的语法是否正确:
sudo nginx -t
如果没有错误,输出将如下所示:
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
重新启动Nginx服务,以使更改生效:
sudo systemctl restart nginx
这个时候,将测试用的index.html放到新增站点的根目录下面,在新增域名的dns中录入vps的IP地址,使新增的域名能够解析到这个vps的公网ip上。最后,在浏览器上输入新增的域名,如果出现了测试index.html内容说明成功了。
可是问题来了,输入新增的域名后,出来的网页竟然是之前的站点内容,为什么呢?哪里出错了?
这时候,我想起在执行nginx -t命令测试配置语法是否正确时,输出信息有这样一行:
nginx: configuration file /etc/nginx/nginx.conf test is successful
里面提到配置文件:/etc/nginx/nginx.conf ,那么就看一下这个文件吧,文件内有这样几行:
# Virtual Host Configs
##
include /etc/nginx/conf.d/*.conf;
#include /etc/nginx/sites-enabled/*;
注意#include /etc/nginx/sites-enabled/*; sites-enabled被屏蔽了,这是是否是sites-enabled中的设置就不起作用了呢?起作用的是“include /etc/nginx/conf.d/*.conf”?
于是
# cd /etc/nginx/conf.d
#ll
看到了之前以站点命名的两个conf配置文件,复制其中一个改名为新增域名后,用vi修改成这样:
server {
listen 80;
server_name example.com;
root /var/www/example.com/public_html;
index index.php index.html;
location / {
try_files $uri $uri/ /index.php?$args ;
}
location ~ /favicon.ico {
access_log off;
log_not_found off;
}
location ~ \.php$ {
try_files $uri /index.php;
include fastcgi_params;
fastcgi_pass 127.0.0.1:9000;
#fastcgi_pass unix:/run/php/php7.4-fpm.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}
access_log /var/log/nginx/$host-access.log;
error_log /var/log/nginx/wpms-error.log;
}
然后,重新启动nginx
sudo systemctl restart nginx
再次在浏览器输入新增域名,发现ok了。
看来存在两套机制支持多站点,一个是/etc/nginx/sites-available/和/etc/nginx/sites-enabled/;另一个是在/etc/nginx/conf.d下写各自站点的配置文件。使用哪一个机制由
/etc/nginx/nginx.conf 中的下面几条语句确定:
# Virtual Host Configs
##
include /etc/nginx/conf.d/*.conf;
#include /etc/nginx/sites-enabled/*;