这是我的4,持续5小时的问题:
我已经设置了一个wordpress多站点实例,它将在domain.com,subdomain.domain.com和customdomain.com上处理网站.将有N个网站使用customdomain.com,所以我不想为每个网站创建记录.在服务器上,我在Apache面前有Nginx.
我想做的是在Nginx中设置通配符记录来处理所有自定义域.现在,它看起来像这样:
server {
listen 80;
server_name _;
root /home/server_user/web/production;
client_max_body_size 50M;
client_body_buffer_size 128k;
location / {
access_log off;
proxy_pass http://localhost:8080;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header Host $proxy_host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
通过此设置,它会将请求传递给Apache并提供动态内容,但会为所有静态内容返回404.如果我将’server_name’更改为’customdomain.com’,Nginx将再次开始提供静态内容.当我将’server_name’更改为’_’或任何其他全能模式时,Nginx就会落在它的脸上.
有任何想法吗?
解决方案(至少我的配置):
在通配符记录中,’listen’指令还应包含’default’:
listen 80 default;
不要添加’server_name’指令,因为这会导致事情以丑陋,意想不到的方式破坏.
道具到Max Cutler,帮助我解决这个问题.