Nginx
Nginx:在位置使用 $http_host
我在 nginx 配置中有很多伺服器別名:
server { listen 80; server_name example.com site1.example.com site2.example.com site3.example.com ...
我如何控制 robots.txt 文件位置中別名的特定文件夾,例如我的意思是:
location ^~ $http_host/robots.txt { alias /home/web/public_html/static/$http_host/robots.txt; }
上面的施工不工作。
您可以使用
$host
nginx 變數:location /robots.txt { alias /home/web/public_html/static/$host/robots.txt; }
或者:
location /robots.txt { root /home/web/public_html/static/$host; }
預設情況下
$host
代表:按照優先順序:請求行中的主機名,或“主機”請求標頭欄位中的主機名,或與請求匹配的伺服器名。
我不知道這是否可能。如果是有人會提供另一個答案。
另一種方法是為具有任何自定義位置的每個站點創建一個伺服器塊,然後在一個公共 cile 中包含任何公共指令。像這樣的東西
例子1.conf
server { listen 80; server_name site1.example.com; include common1.conf; location ^~ robots.txt { alias /home/web/public_html/static/example1/robots.txt; } }
例子2.conf
server { listen 80; server_name site2.example.com; include common1.conf; location /abcd { //whatever } location ^~ robots.txt { alias /home/web/public_html/static/example2/robots.txt; } }
common1.conf
location /common/location { //whatever }