小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

Nginx多Server反向代理配置

 集微筆記 2014-04-29

Nginx強(qiáng)大的正則表達(dá)式支持,可以使server_name的配置變得很靈活,如果你要做多用戶博客,那么每個(gè)用戶擁有自己的二級(jí)域名也就很容易實(shí)現(xiàn)了。

下面我就來(lái)說(shuō)說(shuō)server_name的使用吧:

server_name的匹配順序

Nginx中的server_name指令主要用于配置基于名稱虛擬主機(jī),server_name指令在接到請(qǐng)求后的匹配順序分別為:

1、準(zhǔn)確的server_name匹配,例如:

  1. server { 
  2. listen 80; 
  3. server_name  www.; 
  4. ... 

2、以*通配符開(kāi)始的字符串:

  1. server { 
  2. listen 80; 
  3. server_name *.; 
  4. ... 

3、以*通配符結(jié)束的字符串:

  1. server { 
  2. listen 80; 
  3. server_name www.*; 
  4. ... 

4、匹配正則表達(dá)式:

  1. server { 
  2. listen 80; 
  3. server_name ~^(?.+)\.howtocn\.org$; 
  4. ... 

Nginx將按照1,2,3,4的順序?qū)erver name進(jìn)行匹配,只有有一項(xiàng)匹配以后就會(huì)停止搜索,所以我們?cè)谑褂眠@個(gè)指令的時(shí)候一定要分清楚它的匹配順序(類似于location指令)。

server_name指令一項(xiàng)很實(shí)用的功能便是可以在使用正則表達(dá)式的捕獲功能,這樣可以盡量精簡(jiǎn)配置文件,畢竟太長(zhǎng)的配置文件日常維護(hù)也很不方便。下面是2個(gè)具體的應(yīng)用:

在一個(gè)server塊中配置多個(gè)站點(diǎn):

  1. server 
  2. listen 80; 
  3. server_name ~^(www\.)?(.+)$; 
  4. index index.php index.html; 
  5. root /data/wwwsite/$2; 

站點(diǎn)的主目錄應(yīng)該類似于這樣的結(jié)構(gòu):

  1. /data/wwwsite/ 
  2. /data/wwwsite/linuxtone.org 
  3. /data/wwwsite/baidu.com 
  4. /data/wwwsite/google.com 

這樣就可以只使用一個(gè)server塊來(lái)完成多個(gè)站點(diǎn)的配置。

在一個(gè)server塊中為一個(gè)站點(diǎn)配置多個(gè)二級(jí)域名 。

實(shí)際網(wǎng)站目錄結(jié)構(gòu)中我們通常會(huì)為站點(diǎn)的二級(jí)域名獨(dú)立創(chuàng)建一個(gè)目錄,同樣我們可以使用正則的捕獲來(lái)實(shí)現(xiàn)在一個(gè)server塊中配置多個(gè)二級(jí)域名:

  1. server 
  2. listen 80; 
  3. server_name ~^(.+)?\.howtocn\.org$; 
  4. index index.html; 
  5. if ($host = ){ 
  6. rewrite ^ http://www. permanent; 
  7. root /data/wwwsite//$1/; 

站點(diǎn)的目錄結(jié)構(gòu)應(yīng)該如下:

  1. /data/wwwsite//www/ 
  2. /data/wwwsite//nginx/ 

這樣訪問(wèn)www.時(shí)root目錄為/data/wwwsite//www/,nginx.時(shí)為/data/wwwsite//nginx/,以此類推。

后面if語(yǔ)句的作用是將的方位重定向到www.,這樣既解決了網(wǎng)站的主目錄訪問(wèn),又可以增加seo中對(duì)www.的域名權(quán)重。

多個(gè)正則表達(dá)式

如果你在server_name中用了正則,而下面的location字段又使用了正則匹配,這樣將無(wú)法使用$1,$2這樣的引用,解決方法是通過(guò)set指令將其賦值給一個(gè)命名的變量:

  1. server 
  2. listen 80; 
  3. server_name ~^(.+)?\.howtocn\.org$; 
  4. set $www_root $1; 
  5. root /data/wwwsite//$www_root/; 
  6. location ~ .*\.php?$ { 
  7. fastcgi_pass 127.0.0.1:9000; 
  8. fastcgi_index index.php; 
  9. fastcgi_param SCRIPT_FILENAME /data/wwwsite//$fastcgi_script_name; 
  10. include fastcgi_params; 

Nginx不同域名反向代理到另一臺(tái)服務(wù)器 proxy_pass和$host

想讓一個(gè)VPS專門做另一個(gè)VPS的前端,后端VPS每添加一個(gè)域名,前端VPS就要同時(shí)添加一個(gè)域名來(lái)反向代理,作為前端的VPS如果一個(gè)一個(gè)的添加后端VPS的域名,那么這個(gè)事情特別麻煩,能不能讓其自動(dòng)反向代理后端VPS呢,用到proxy_pass和$host就可以輕松實(shí)現(xiàn)。

以下例子為了省事,以lnmp為安裝環(huán)境進(jìn)行設(shè)置

修改前端VPS的nginx.conf文件,修改成以下內(nèi)容:

  1. server { 
  2. listen 80; 
  3. server_name $host; 
  4. location / { 
  5. proxy_pass http://www./; 
  6. proxy_set_header Host $host; 
  7. proxy_redirect off; 
  8. proxy_set_header X-Real-IP $remote_addr; 
  9. proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 
  10. proxy_connect_timeout 60; 
  11. proxy_read_timeout 600; 
  12. proxy_send_timeout 600; 

下面的一并修改吧。

  1. location /.(php|php5)?$ 
  2. fastcgi_pass unix:/tmp/php-cgi.sock; 
  3. fastcgi_index index.php; 
  4. include fcgi.conf; 
  5. location /status { 
  6. stub_status on; 
  7. access_log off; 
  8. location /.(gif|jpg|jpeg|png|bmp|swf)$ 
  9. expires 30d; 
  10. location /.(js|css)?$ 
  11. expires 12h; 

這樣就可以實(shí)現(xiàn)了前端VPS可以反向代理任意域名到后端VPS,只要將域名解析到前端VPS,后端VPS進(jìn)行域名綁定,那么就可以直接訪問(wèn)到了

一臺(tái)nginx帶多個(gè)域名多個(gè)tomcat情況的配置

多個(gè)域名,其中2個(gè)域名需支持泛域名解析:

1、www.abc.com

2、www.bcd.com

3、*.efg.com

4、*.hij.com

其中1,2,3為一臺(tái)tomcat,4為獨(dú)立tomcat。前端一臺(tái)nginx,通過(guò)配置多個(gè)虛擬主機(jī)來(lái)實(shí)現(xiàn)該部署。

進(jìn)入/etc/nginx/conf.d目錄,所有虛擬主機(jī)的配置文件都在該目錄下存放,配置。

配置支持泛域名

  1. # A virtual host using mix of IP-, name-, and port-based configuration 
  2. server { 
  3. listen       81; 
  4. server_name  *.efg.com; 
  5. location / { 
  6. proxy_pass http://localhost:8080; 
  7. proxy_set_header   Host    $host; 
  8. proxy_set_header   X-Real-IP   $remote_addr; 
  9. proxy_set_header   X-Forwarded-For $proxy_add_x_forwarded_for; 
  10. # A virtual host using mix of IP-, name-, and port-based configuration 
  11. server { 
  12. listen       81; 
  13. server_name  *.hij.com; 
  14. location / { 
  15. proxy_pass http://localhost:8081; 
  16. proxy_set_header   Host    $host; 
  17. proxy_set_header   X-Real-IP   $remote_addr; 
  18. proxy_set_header   X-Forwarded-For $proxy_add_x_forwarded_for; 

泛域名解析關(guān)鍵為紅色部分,如果沒(méi)有紅色部分,后端8080及8081口對(duì)應(yīng)的tomcat虛擬主機(jī)將無(wú)法獲得域名信息,導(dǎo)致后端tomcat無(wú)法獲取到對(duì)應(yīng)的域名信息。

后端TOMCAT支持泛域名解析時(shí),需要設(shè)置 host name 為 localhost 以支持泛域名指向。

Nginx 多域名配置

nginx綁定多個(gè)域名可又把多個(gè)域名規(guī)則寫(xiě)一個(gè)配置文件里,也可又分別建立多個(gè)域名配置文件,我一般為了管理方便,每個(gè)域名建一個(gè)文件,有些同類域名也可又寫(xiě)在一個(gè)總的配置文件里。

一、每個(gè)域名一個(gè)文件的寫(xiě)法

首先打開(kāi) nginx域名配置文件存放目錄:/usr/local/nginx/conf/servers ,如要綁定域名www. 則在此目錄建一個(gè)文件:www..conf 然后在此文件中寫(xiě)規(guī)則,如:

  1. server 
  2. listen       80; 
  3. server_name www.;             #綁定域名 
  4. index index.htm index.html index.php;      #默認(rèn)文件 
  5. root /home/www/;               #網(wǎng)站根目錄 
  6. include location.conf;                            #調(diào)用其他規(guī)則,也可去除 

然后重起nginx服務(wù)器,域名就綁定成功了。

Nginx服務(wù)器重起命令:/etc/init.d/nginx restart。

二、一個(gè)文件多個(gè)域名的寫(xiě)法

一個(gè)文件添加多個(gè)域名的規(guī)則也是一樣,只要把上面單個(gè)域名重復(fù)寫(xiě)下來(lái)就ok了,如:

  1. server 
  2. listen       80; 
  3. server_name www.;             #綁定域名 
  4. index index.htm index.html index.php;      #默認(rèn)文件 
  5. root /home/www/;               #網(wǎng)站根目錄 
  6. include location.conf;                            #調(diào)用其他規(guī)則,也可去除 
  7. server 
  8. listen       80; 
  9. server_name msn.;             #綁定域名 
  10. index index.htm index.html index.php;      #默認(rèn)文件 
  11. root /home/www/msn.;        #網(wǎng)站根目錄 
  12. include location.conf;                            #調(diào)用其他規(guī)則,也可去除 

三、不帶www的域名加301跳轉(zhuǎn)

如果不帶www的域名要加301跳轉(zhuǎn),那也是和綁定域名一樣,先綁定不帶www的域名,只是不用寫(xiě)網(wǎng)站目錄,而是進(jìn)行301跳轉(zhuǎn),如:

  1. server 
  2. listen 80; 
  3. server_name ; 
  4. rewrite ^/(.*) http://www./$1 permanent; 

四、添加404網(wǎng)頁(yè)

添加404網(wǎng)頁(yè),都可又直接在里面添加,如:

  1. server 
  2. listen       80; 
  3. server_name www.;             #綁定域名 
  4. index index.htm index.html index.php;      #默認(rèn)文件 
  5. root /home/www/;               #網(wǎng)站根目錄 
  6. include location.conf;                            #調(diào)用其他規(guī)則,也可去除 
  7. error_page 404  /404.html; 

最后還有一個(gè)方法需要注意,可能有需要禁止IP直接訪問(wèn)80端口或者禁止非本站的域名綁定我們的IP,這樣的話應(yīng)該

如下處理,放到最前一個(gè)server上面即可:

  1. server{ 
  2. listen   80 default; 
  3. server_name      _; 
  4. return 403; 

學(xué)會(huì)上面四種規(guī)則方法,基本就可以自己獨(dú)立解決nginx 多域名配置問(wèn)題了。


    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多