Domain-Name-System

如何使用萬用字元 DNS 設置 nginx 伺服器

  • September 22, 2013

這是一個使用子域的範例 Rails 應用程序。你可以在這裡訪問它:http ://rodrigora.com.br 。在這個應用程序中,您可以創建站點並為其指定一個子域。

例子:

地點:Google

子域:gog

該站點應可通過http://gog.rodrigora.com.br訪問

但是,任何子域都無法訪問該應用程序,www.


DNS伺服器配置:

域名系統

nginx伺服器配置:

upstream app_server {
 server unix:/tmp/unicorn.blog.sock fail_timeout=0;
}

server {
 listen 80 default;
 #server_name localhost;
 client_max_body_size 4G;
 keepalive_timeout 10;
 root /home/ubuntu/apps/blog/current/public;
 try_files $uri/index.html $uri.html $uri @app;

 location @app {
   proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
   # proxy_set_header X-Forwarded-Proto $scheme;
   proxy_set_header Host $http_host;
   proxy_redirect off;
   proxy_pass http://app_server;
 }

 # Rails error pages
 error_page 500 502 503 504 /500.html;
 location = /500.html {
   root /home/ubuntu/apps/blog/current/public;
 }

 location ~ ^/(assets)/  {
   root /home/ubuntu/apps/blog/current/public;
   gzip_static on; # to serve pre-gzipped version
   expires max;
   add_header Cache-Control public;
 }
}

額外資訊:如果我www.rodrigora.com.br在瀏覽器上訪問,Google瀏覽器會顯示未找到的頁面,但會nginx記錄這一行:

186.210.71.46 - - [21/Sep/2013:22:08:37 +0000] "GET / HTTP/1.1" 304 0 "-" "Mozilla/5.0 (X11; Linux i686) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/29.0.1547.65 Safari/537.36"

問題:

  • 那麼,nginx是說www子域不存在?
  • 如何配置此應用程序以響應任何子域?

資源:

Railscast 子域

DNS 傳播

萬用字元 DNS 檢查

放置伺服器名稱,因為*.rodrigora.com.br這將讓 nginx 伺服器接受具有此域潛艇之一的任何請求。

你試過listen 80 default_server;嗎?

這可能是您需要的更多。我相信對於伺服器名稱_;是一個包羅萬象的。

server {
   listen 80 default_server;
   server_name _;
   rewrite ^(.*)$ http://www.domain.tld$1 permanent;
}

引用自:https://serverfault.com/questions/540744