我想配置 nginx,以便每个域名上的特定路径路由到某个位置。用例是,我希望能够将 lets encrypt 指向此位置以删除验证文件并使其适用于每个域。
我知道 nginx 具有location
可以在服务器块中使用的块,但我不知道如何让服务器块在路径正确时接受所有域名,即使其他服务器块指定了要监听的域。
答案1
Nginxserver
根据listen
和server_name
指令的值选择一个块来处理请求。将通用代码插入多个server
块(或 Nginx 配置中的任何其他位置)的最佳方法是将它们放入单独的文件中并使用指令include
。请参阅这个文件了解详情。
例如:
在一个名为的文件中wellknown.conf
:
location ^~ /.well-known/ {
root /path/to/root;
}
在每个server
区块中:
server {
...
include wellknown.conf;
...
}
如果没有任何目录路径,则文件将位于与文件相同的目录中nginx.conf
。显然,这些文件可以放在文件系统的其他位置,但请避免使用诸如和之类的目录sites-enabled
,因为这些目录已经有特定用途。sites-available
conf.d
^~
指令上的修饰符使其location
明确无误,并避免任何正则表达式location
优先。请参阅这个文件了解详情。