nginx server_name 通配符或包罗万象

标签 nginx catch-all server-name

我有一个正在运行的 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/

相关文章:

nginx $server_name 始终是本地主机

javascript - 如何修复 nginx 上的 http 414 Request-URI Too Large 错误?

php - 在 PHP 中创建一个 Catch-All 处理程序?

exchange-server-2010 - Exchange2010集线器传输环境下如何配置catch-all?

configuration - nginx catchallconf 文件未捕获所有内容

sql - 在 MS Sql Server 2016 中将服务器名称声明为变量

nginx - 服务器返回错误时如何使nginx CORS配置工作?

linux - Nginx/libxml 错误

django - 简单的内部服务器错误,因为运行 uwsgi 不断删除 .sock 文件