我有一个正在运行的 nginx 实例,它为多个网站提供服务。第一个是服务器 IP 地址上的状态消息。第二个是 admin.domain.com
上的管理控制台。这些效果很好。现在我希望所有其他域请求都转到单个 index.php
- 我有大量的域和子域,将它们全部列出在 nginx 配置中是不切实际的。
到目前为止,我已尝试将 server_name
设置为 *
,但由于通配符无效而失败。 *.*
一直有效,直到我添加其他服务器 block ,然后我猜它与它们冲突。
有没有办法在定义其他站点后在 nginx 中运行一个包罗万象的服务器 block ?
注意我不是垃圾邮件发送者,这些都是具有有用内容的正版网站,它们只是由数据库中的相同 CMS 提供支持!
最佳答案
在您的全部服务器 block 中将监听选项更改为此。 (添加 default_server
)这将获取所有未定义的连接(在指定端口上)。
listen 80 default_server;
如果文件或文件夹不存在,您想将所有内容推送到index.php;
try_files $uri /$uri /index.php;
每the docs , 还可以使用listen指令中的 **default_server** 参数明确设置哪个服务器应该是默认的
关于nginx server_name 通配符或包罗万象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9454764/