nginx泛域名轉(zhuǎn)發(fā)到泛域名
resolver 8.8.8.8; #必須配置?。?!不然無(wú)法代理
server {
listen 80 default_server;
listen [::]:80 default_server;
server_name _;
root /usr/share/nginx/html;
# Load configuration files for the default server block.
include /etc/nginx/default.d/*.conf;
location / {
#default_type text/html;
#正則截取域名前綴,例如www.xxx.com截取只要www
if ( $host ~* (.*)\.(.*)\. ) {
set $domain $1;
}
set $url https://$domain.xxx.com$request_uri;
proxy_pass $url;
#return 200 $domain;
#return 200 $url;
}
}
有的時(shí)候,我們需要配置一些自定義的子域名,如:
test.user.demo.com
a01.user.demo.com
這時(shí)候就需要域名的 DNS 解析一個(gè)泛域名 *.user.demo.com 到服務(wù)器,Nginx 可以配置如下:
子域名轉(zhuǎn)發(fā)到子目錄
server {
listen 80;
server_name ~^([\w-]+)\.user\.demo\.com$;
location / {
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
proxy_set_header X-NginX-Proxy true;
proxy_pass http://127.0.0.1:8080/$1$request_uri;
}
}
以上配置表示:
test.user.demo.com/path?a=1 -> 127.0.0.1:8080/test/path?a=1
a01.user.demo.com/path?a=1 -> 127.0.0.1:8080/a01/path?a=1
這樣后端就可以根據(jù)子目錄解析不同的規(guī)則,甚至 Nginx 可以再進(jìn)行鏈接重寫(xiě)。
子域名配置不同的目錄
server {
listen 80;
server_name ~^([\w-]+)\.user\.demo\.com$;
root /home/user/wwwroot/user/$1;
}
以上配置可以把不同的子域名分發(fā)到不同的目錄中,做到路徑分離的功能,如:
test.user.demo.com -> /home/user/wwwroot/user/test;
a01.user.demo.com -> /home/user/wwwroot/user/a01;