在我的域名下,说example.com
,我希望有一个目标网页(在点击example.com
时会出现),一个WordPress博客(将在blog.example.com
生活)和我的以HTML格式恢复(将在resume.example.com
生效)。使用nginx,我希望有三个独立的.conf文件,这样我就可以将它们分开来回分开。设置DNS使得“resume”和“blog”是example.com
的A记录。
我在Linode上运行它,所以我可以完全控制DNS和Web服务器。但是,当我尝试将blog.example.com
的nginx .conf条目拆分为单独的文件时,当我在网络浏览器中点击此内容时,我会从blog.example.com
重定向到www.example.com
。
我知道安装WordPress不是问题,因为当所有三个服务器条目都在一个nginx文件中时,一切正常。我还尝试为博客(blogs-available
和blogs-enabled
)创建单独的文件夹结构,然后在nginx.conf
之前包含这些文件夹 sites-enabled
包括,但这也不起作用。这让我有两个问题:
有没有人对如何让这个工作有任何建议?也许我的DNS设置不正确。
nginx是否关心加载顺序还是不明确?如果是后者,那么我会将所有内容保存在一个服务器块中,并将它们全部放下或全部放下。
更新:
example.com
的nginx.conf:
# Blog (WordPress site - blog.example.com)
server {
listen <ip-address>;
server_name blog.example.com;
root /www/blog.example.com/public_html/current;
access_log /www/blog.example.com/logs/access.log;
error_log /www/blog.example.com/logs/error.log;
location / {
index index.html index.htm index.php;
try_files $uri $uri/ /index.php;
}
location ~ \.php$ {
include /etc/nginx/fastcgi_params;
fastcgi_param SCRIPT_FILENAME /www/blog.example.com/public_html/current/$fastcgi_script_name;
if ($uri !~ "^/images/") {
fastcgi_pass unix:/var/run/php-fastcgi/php-fastcgi.socket;
}
fastcgi_index index.php;
}
location ~* \.(js|css|png|jpg|jpeg|gif|ico)$ {
expires max;
log_not_found off;
}
}
# redirect example.com to www.example.com
server {
listen <ip-address>;
server_name example.com;
rewrite ^(.*)$ $scheme://www.example.com$request_uri? permanent;
break;
}
# static site - www.example.com
server {
listen <ip-address>;
server_name www.example.com;
# static HTML / soon-to-be Sinatra site
root /www/example.com/public_html/current/public;
access_log /www/example.com/logs/access.log;
error_log /www/example.com/logs/error.log;
}
注意:我上面没有resume.example.com
网站,但这应该是微不足道的。此外,上述工作的任何顺序,所以我不相信这是一个重定向问题。
**第二次更新**
在预感中,我在example.com
conf文件中注释掉了以下内容:
server {
listen <ip-address>:80;
server_name example.com;
rewrite ^(.*)$ $scheme://www.example.com$request_uri? permanent;
break;
}
它按预期工作。我的非www - &gt;是否有问题?上面的www重定向规则?
答案 0 :(得分:0)
对于第二个问题,nginx配置是声明性的。服务器块顺序无关紧要。因此,可以轻松地在自己的.conf文件中管理每个服务器块。
UPDATE 看到nginx配置文件后
找不到nginx conf文件的任何问题。在我的devbox中尝试过,它工作正常。所以它可能来自dns设置。一种可能性是您将“blog”设置为“www”的CNAME记录(cname记录是别名)。如,
blog IN CNAME www
如果是这种情况,网络浏览器会将http://blog.example.com发送给http://www.example.com。
另请注意,dns记录可以缓存在浏览器内或isp dns服务器中。即使你修复了一段时间,仍然可以缓存错误的记录。尝试
dig blog.example.com
获取dns设置的一些信息。