整理Nginx反向代理操作實戰,百萬年薪架構師,在向你招手

反向代理實踐

nginx + substitutions 安裝
  nginx 自帶一個Substitution模塊,但該模塊只能寫一行,所以我們改用 substitutions


  下面是安裝一些預備軟件

  1. yum -y --noplugins install wget zip
  2. yum -y --noplugins install unzip
  3. yum -y --noplugins install gcc
  4. yum -y --noplugins install make
  5. yum -y --noplugins install pcre-devel
  6. yum -y --noplugins install openssl-devel

編譯軟件

  1. tar zxf nginx-1.0.8.tar.gz
  2. cd nginx-1.0.8
  3. ./configure ./configure --add-module=path/substitutions4nginx-read-only //注意這裡的path是相對應的真實路徑
  4. make
  5. make install
  6. 配置 nginx.conf
      此時,nginx應該安裝在於 /usr/local/nginx 下面
  7. server_name servername;
  8. location / {
  9. subs_filter ca-pub-********** ca-pub-**********; //把google ad 的用戶號 ca-pub-9805743306566114 改成你自己的,比如 ca-pub-**********
  10. subs_filter ********** **********; //把google ad 的廣告號 **********改成你自己的,比如 **********,你懂的!:D
  11. proxy_pass 這裡是填寫需要代理的網址; //反向代理站。
  12. index index.html index.htm;
  13. }

記住subs_filter 命令的格式即可隨意發揮想象力替換你想替換的廣告、超鏈接,等等。


去掉反向代理煩人的前綴

使用nginx做反向代理的時候,可以簡單的直接把請求原封不動的轉發給下一個服務。設置proxy_pass請求只會替換域名,如果要根據不同的url後綴來訪問不同的服務,則需要通過如下方法:

方法一:加"/"

<code>server {
listen 8000;
server_name abc.com;
access_log "pipe:rollback /data/log/nginx/access.log interval=1d baknum=7 maxsize=1G" main;
location ^~/user/ {
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-NginX-Proxy true;
proxy_pass http://user/;
}
location ^~/order/ {
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-NginX-Proxy true;
proxy_pass http://order/;
}
}/<code>


^~/user/表示匹配前綴是user的請求,proxy_pass的結尾有/, 則會把/user/*後面的路徑直接拼接到後面,即移除user。

方法二:rewrite

<code>upstream user {
server localhost:8089 weight=5;
}
upstream order {
server localhost:8090 weight=5;
}
server {
listen 80;
server_name abc.com;
access_log "pipe:rollback /data/log/nginx/access.log interval=1d baknum=7 maxsize=1G" main;
location ^~/user/ {
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-NginX-Proxy true;
rewrite ^/user/(.*)$ /$1 break;
proxy_pass http://user;
}
location ^~/order/ {
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-NginX-Proxy true;
rewrite ^/order/(.*)$ /$1 break;
proxy_pass http://order;
}
}
/<code>

proxy_pass結尾沒有/, rewrite重寫了url。


分享到:


相關文章: