鍍金池/ 問答/PHP  Linux/ nginx如何做泛域名解析

nginx如何做泛域名解析

server {
        listen       80;
        root /public_html;
        server_name www.myname.com www.myname.com;
        index  index.html index.php index.htm;
        error_page  400 /errpage/400.html;
        error_page  403 /errpage/403.html;
        error_page  404 /errpage/404.html;
        error_page  503 /errpage/503.html;
        location ~ \.php$ {
                proxy_pass http://127.0.0.1:88;
                include naproxy.conf;
        }
        location ~ /\.ht {
                deny  all;
        }
        location / {
                try_files $uri @apache;
        }
        location @apache {
                 proxy_pass http://127.0.0.1:88;
                 include naproxy.conf;
        }
}

以上是我們目前nginx配置

**正常訪問如下
http://www.myname.com/fromid/a1
http://www.myname.com/fromid/a2
http://www.myname.com/fromid/a3
http://www.myname.com/fromid/a4
怎么修改能如下訪問:
http://a1.myname.com
http://a2.myname.com
http://a3.myname.com
http://a4.myname.com**

**還有一種正常訪問如
http://m.myname.com/fromid/a1
http://m.myname.com/fromid/a2
http://m.myname.com/fromid/a3
http://m.myname.com/fromid/a4
想改成如下訪問:
http://a1.m.myname.com
http://a2.m.myname.com
http://a3.m.myname.com
http://a4.m.myname.com**

回答
編輯回答
眼雜

@wuYin
我現(xiàn)在把nginx配置改成了

server {
        listen       80;
        root /www/web/novel/public_html;
        server_name ~^(?<subdomain>.+).m.myname.com;
        index  index.html index.php index.htm;
        error_page  400 /errpage/400.html;
        error_page  403 /errpage/403.html;
        error_page  404 /errpage/404.html;
        error_page  503 /errpage/503.html;
        location ~ \.php$ {
                proxy_pass http://127.0.0.1:88;
                include naproxy.conf;
        }
        location ~ /\.ht {
                deny  all;
        }
        location / {
                try_files $uri @apache;
        }
       location ~ ^/fromid/$subdomain {
                proxy_pass http://$subdomain.m.myname.com;
                proxy_redirect          off;
                proxy_set_header        X-Real-IP       $remote_addr;
                proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for;
       }
        location @apache {
                 proxy_pass http://127.0.0.1:88;
                 include naproxy.conf;
        }
}

        

這樣不行

我訪問 http://m.myname.com/Bookcase/...
改成 http://785843450.m.myname.com... 就不能訪問了

2017年1月21日 17:33
編輯回答
情皺

server_name 有三種配置方式, 原值, 正則, glob

正則加個~前綴, ~(.*).xxx.com
glob, *.xxx.com

2017年4月8日 15:42
編輯回答
浪蕩不羈

使用 Nginx 的反向代理做映射就行,配置如下:

server_name ~^(?<subdomain>.+).myname.com;
location ~ ^/fromid/a1 {
                proxy_pass http://a1.myname.com;
                proxy_redirect          off;
                proxy_set_header        X-Real-IP       $remote_addr;
                proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for;
            }

server_name m.myname.com;
location ~ ^/fromid/a1 {
                proxy_pass http://a1.m.myname.com;
                proxy_redirect          off;
                proxy_set_header        X-Real-IP       $remote_addr;
                proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for;
            }

如果要做泛域名解析,可以這樣配置:

server_name ~^(?<subdomain>.+).myname.com;
root  /public_html/$subdomain;
2018年6月18日 07:00
編輯回答
陪我終

域名解析是 DNS 做的事,不是 nginx 這個 HTTP Server 做的。

2017年10月3日 00:21