有沒有辦法代理所有的流量到某個服務器除非該域是不同的?nginx和asterisk server_name?
基本上是*
爲server_name
屬性?
server {
listen 80;
server_name foo.com
}
server {
listen 80;
server_name *
}
或者,有沒有一種方法來設置一個「默認」的服務器,然後它會如果沒有其他特定服務器CONFIGS比賽使用它?
有沒有辦法代理所有的流量到某個服務器除非該域是不同的?nginx和asterisk server_name?
基本上是*
爲server_name
屬性?
server {
listen 80;
server_name foo.com
}
server {
listen 80;
server_name *
}
或者,有沒有一種方法來設置一個「默認」的服務器,然後它會如果沒有其他特定服務器CONFIGS比賽使用它?
由於@Valery Viktorovsky的回答說,你不能使用* server_name
。您可以指定一個server
塊作爲「默認」來接收所有不匹配其他請求的請求。有關說明,請參閱this post。它看起來像這樣:
server {
listen 80 default_server;
server_name wontmatch.com; # but it doesn't matter
}
有關更多信息,請參見the docs for server_name
。
您不能將*用於server_name
。來自documentation:
通配符名稱可能只在名稱的開始或結束處包含星號,並且僅在點邊界上。
但是,您可以使用正則表達式:
server {
server_name ~^(www\.)?(.+)$;
location/{
root /sites/$2;
}
}
只是一個快速更新..根據文檔的通配符現在要做的工作:http://nginx.org/en/docs/http/server_names.html
僅供參考,對於像我這樣誰正在尋找的東西有點不同,下面的配置將聽取和所有端口響應80請求您是否使用IP或URL(又名一切):
server {
listen 80 default_server;
server_name _;
...
}
來自http://nginx.org/en/docs/http/server_names.html
在包羅萬象的服務器實例可以看到奇怪的名字「_」:
server { listen 80 default_server; server_name _; 返回444; }沒有什麼特別之處這個名字,...
您將獲得sudo service nginx restart
或... start
的錯誤,同時/etc/nginx/sites-enabled/default
符號鏈接仍然有效,因爲它使用相同的匹配模式。只要刪除該鏈接,一切都應該工作。
爲什麼是2美元而不是1美元? – CMCDragonkai
這似乎是一個錯字:它應該是$ 1。 – sanityinc
$ 2是正確的,它是你想要的第二組 – Robbo