这是关于使用子域名的 Rails 应用程序示例。您可以在此处访问它:http://rodrigora.com.br。在此应用中,您可以创建站点并为其指定一个子域。
例子:
地点:
子域名:
gog
但是,该应用程序对于任何子域都无法访问,无论是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 Chrome 会显示未找到的页面,但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
域名不存在?如何配置此应用程序以响应任何子域?
资源:
答案1
输入服务器名称,这样*.rodrigora.com.br
nginx 服务器就可以接受任何带有该域名的请求。
答案2
你有没有尝试过listen 80 default_server;
?
这可能更符合您的需要。我相信服务器名称_;
是一个万能名称。
server {
listen 80 default_server;
server_name _;
rewrite ^(.*)$ http://www.domain.tld$1 permanent;
}