Nginx 匹配任意域名上的路径

Nginx 匹配任意域名上的路径

我想配置 nginx,以便每个域名上的特定路径路由到某个位置。用例是,我希望能够将 lets encrypt 指向此位置以删除验证文件并使其适用于每个域。

我知道 nginx 具有location可以在服务器块中使用的块,但我不知道如何让服务器块在路径正确时接受所有域名,即使其他服务器块指定了要监听的域。

答案1

Nginxserver根据listenserver_name指令的值选择一个块来处理请求。将通用代码插入多个server块(或 Nginx 配置中的任何其他位置)的最佳方法是将它们放入单独的文件中并使用指令include。请参阅这个文件了解详情。

例如:

在一个名为的文件中wellknown.conf

location ^~ /.well-known/ {
    root /path/to/root;
}

在每个server区块中:

server {
    ...
    include wellknown.conf;
    ...
}

如果没有任何目录路径,则文件将位于与文件相同的目录中nginx.conf。显然,这些文件可以放在文件系统的其他位置,但请避免使用诸如和之类的目录sites-enabled,因为这些目录已经有特定用途。sites-availableconf.d

^~指令上的修饰符使其location明确无误,并避免任何正则表达式location优先。请参阅这个文件了解详情。

相关内容