我正在为运行 wordpress 的多个网站设置 Nginx 和 PHP 5.3。我刚刚添加了一个新网站,它被重定向到默认欢迎页面。我在日志中看不到任何“真实”错误。
这是我的缩写 nginx.conf:
http {
access_log /var/log/nginx_access.log;
index index.php index.html;
server {
listen 80 default_server;
server_name _;
root /opt/nginx/html;
location / {
}
}
server {
listen 80;
server_name example.com *.example.com;
rewrite ^ $scheme://www.example.com$request_uri? permanent;
}
server {
listen 80;
server_name www.example.com;
root /home/example/example.com;
location / {
}
location ~ \.php$ {
try_files $uri =404;
fastcgi_pass unix:/var/run/php5-fpm/example.sock;
fastcgi_index index.php;
include fastcgi_params;
}
}
答案1
正如评论所指出的,服务器块中的 listen 指令将其定义为默认值(来源:http://nginx.org/en/docs/http/request_processing.html):
listen 80 default_server;
以下声明是无效的服务器名称(来源:http://nginx.org/en/docs/http/server_names.html)(因此它永远不会与任何有效域相交):
Server_name _;
为了解决您的问题,请确保您有一个带有 listen(端口)和 server_name(虚拟主机)的服务器块 - 当您在 nginx 中执行虚拟主机名匹配时,从“更精确到不太精确”时,这个将首先被触发:
Listen 80;
Server_name your-domain-name.com;