我决定尝试一下 nginx,但似乎我被困在了真正的开始阶段。我有一台运行 Debian 的服务器,我正在尝试使用 1 个域 + 2 个子域配置 nginx。当我访问主域时,它显示了它应该显示的内容。当我访问第一个子域时,它访问正确的文件夹,但当我访问第二个子域时,它反而显示主域。以下是我迄今为止修改的内容:
sites-available(主域)工作正常
server {
listen 80 default_server;
listen [::]:80 default_server;
root /var/www/domain.com/public_html/;
index index.php index.html index.htm index.nginx-debian.html;
server_name www.domain.com domain.com;
location / {
try_files $uri $uri/ =404;
}
}
sites-available(第一个子域名)工作正常
server{
listen 80;
listen [::]:80;
root /var/www/sub1.domain.com;
index index.php index.html index.htm index.nginx-debian.html;
server_name sub1.domain.com;
location / {
try_files $uri $uri/ =404;
}
}
可用站点 (第二个子域名)重定向至主域名
server{
listen 80;
listen [::]:80;
root /var/www/sub2.domain.com;
index index.php index.html index.htm index.nginx-debian.html;
server_name sub2.domain.com;
location / {
try_files $uri $uri/ =404;
}
}
我创建了此文件到 sites-enabled 的符号链接,并将它们添加到 /etc/hosts
Server IP www.domain.com domain.com
Server IP sub1.domain.com
Server IP sub2.domain.com
该域和两个子域均有指向服务器 IP 的 A 记录。我多次重启了 nginx 和服务器,清除了所有浏览器上的 cookie 和缓存,还尝试过从不同的 PC 上进行操作……我看不出第二个子域的配置有什么问题。
任何帮助将不胜感激!!
预计起飞时间:这里有一些日志:
错误日志
2015/11/17 22:41:16 [notice] 10184#0: signal process started
2015/11/17 22:56:46 [notice] 10891#0: signal process started
2015/11/17 23:06:37 [notice] 11332#0: signal process started
它基本上充满了那些。
访问日志
94.23.253.89 - - [17/Nov/2015:23:13:24 +0100] "GET / HTTP/1.1" 200 18 "-" "curl/7.38.0"
94.23.253.89 - - [17/Nov/2015:23:14:30 +0100] "GET / HTTP/1.1" 200 18 "-" "lwp-request/6.03 libwww-perl/6.08"
94.23.253.89 - - [17/Nov/2015:23:14:48 +0100] "GET / HTTP/1.1" 200 18 "-" "lwp-request/6.03 libwww-perl/6.08"
94.23.253.89 - - [17/Nov/2015:23:15:35 +0100] "GET / HTTP/1.1" 200 18 "-" "lwp-request/6.03 libwww-perl/6.08"
94.23.253.89 - - [17/Nov/2015:23:15:52 +0100] "GET / HTTP/1.1" 200 18 "-" "lwp-request/6.03 libwww-perl/6.08"
94.23.253.89 - - [17/Nov/2015:23:15:58 +0100] "GET / HTTP/1.1" 200 18 "-" "lwp-request/6.03 libwww-perl/6.08"
94.23.253.89 - - [17/Nov/2015:23:16:05 +0100] "GET / HTTP/1.1" 200 18 "-" "lwp-request/6.03 libwww-perl/6.08"
答案1
server {
set $docroot "/var/www/domain.com/public_html/";
listen 80 default_server;
server_name www.domain.com domain.com;
root $docroot;
try_files $uri $uri/ /index.php?$args;
index index.php index.html index.htm;
}
server {
set $docroot "/var/www/sub1.domain.com/public_html/";
listen 80;
server_name www.sub1.domain.com sub1.domain.com;
root $docroot;
try_files $uri $uri/ /index.php?$args;
index index.php index.html index.htm;
}
server {
set $docroot "/var/www/sub2.domain.com/public_html/";
listen 80;
server_name www.sub2.domain.com sub2.domain.com;
root $docroot;
try_files $uri $uri/ /index.php?$args;
index index.php index.html index.htm;
}
确保在启用的站点中,它们是指向 sites-available 目录的 sim-link。您可以将上述内容放入一个文件中,也可以将每个内容放入 sites-available 目录中的单独文件中。
要使用 nginx 测试您的配置,使用nginx -t
它将显示您的配置是否正确,而不会影响服务器。