簡體   English   中英

Nginx-通配符靜態域

[英]Nginx - wildcard static domain

我正在嘗試設置一個通配符靜態域。 我的服務器托管多個域,因此我寧願為它們所有配置一個域,而不必手動添加每個域。 到目前為止,我有這個...

server {
    server_name static.* www.static.*;

    root /var/web/$host/;

    access_log off;
    error_log off;

    location ~* \.(jpg|jpeg|gif|png|bmp|ico|pdf|flv|swf|exe|html|htm|txt|css|js) {
            add_header        Cache-Control public;
            add_header        Cache-Control must-revalidate;
            expires           7d;
    }
    location  / {
            deny all;
    }

}

所有文件都以該格式存儲在/var/web/example.com/中,包括子域/var/web/subdomain.example.com/

該域用於靜態內容(僅圖像/ css / js等),我希望根目錄與普通站點相同,只是它只允許靜態文件(因此,php fpm不在此處)

沒有任何nginx錯誤,但是我得到404錯誤,我感覺這與root / var / web / $ host /有關; 有任何想法嗎?

我會嘗試

root /var/web/$http_host/;

並且我還會嘗試使用固定域名(例如www.static.whatever.com)來查看是否可以訪問至少一個靜態文件。 然后,我將繼續為該問題添加更多的自由度。

而且我會扔

listen 80;

只想確認一下。

閑逛了一會兒,使我想到了這一點: http : //nginx.org/en/docs/http/server_names.html

我在哪里找到可以在server_name中進行正則表達式的地方。 所以這對我有用:

server {
    listen 80;
    server_name ~^static\.(?<domain>.+)$;

    root /var/web/$domain/;

    access_log off;
    error_log off;

    location ~* \.(jpg|jpeg|gif|png|bmp|ico|pdf|flv|swf|exe|html|htm|txt|css|js) {
            add_header        Cache-Control public;
            add_header        Cache-Control must-revalidate;
            expires           7d;
    }
    location  / {
            deny all;
    }

}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM