国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

nginx反向代理與微信測(cè)試全攻略

endless_road / 3546人閱讀

摘要:傳給微信的參數(shù)進(jìn)行轉(zhuǎn)義其中參數(shù)是可以被微信原樣返回,這樣就可以按你自己的需求完成反向代理了。可以去掉搭建測(cè)試環(huán)境另一條運(yùn)維的原則是不要在生產(chǎn)環(huán)境上直接改,在測(cè)試環(huán)境修改并經(jīng)過(guò)測(cè)試,測(cè)試通過(guò)后,再上傳到生產(chǎn)環(huán)境。

前言

在與第三方系統(tǒng)進(jìn)行接口開(kāi)發(fā)時(shí),需要不斷的改進(jìn)和測(cè)試,以常見(jiàn)的微信登錄支付和 Alipay 支付和登錄為例. 相對(duì)來(lái)講 Alipay 做起來(lái)容易一些, 一是接口 SDK 封裝的簡(jiǎn)單一些,對(duì)老接口也相對(duì)友好, 文檔的岐義少. 微信就不那么容易了. 出于安全的考慮,微信的商戶 ID 授權(quán)回調(diào)和支付回調(diào)只允許后臺(tái)配置的一個(gè)地址, 看上去可以加, 但在我有限的經(jīng)驗(yàn)里,加了也不管用. 有時(shí)間吐槽,不如花時(shí)間想其他辦法搞定. 借助于萬(wàn)能的 nginx 反向代理功能, 我們就把測(cè)試的和正式環(huán)境的配置通一個(gè)域名地址,但不同參數(shù)的方式搞定了.

使用場(chǎng)景 - 微信的測(cè)試

假設(shè)你和一個(gè)正式服務(wù)器,如 bixuebihui.com, 還有一個(gè)測(cè)試用的,dev.bixuebihui.com, 正式的微信回調(diào)路徑是 https://bixuebihui.com/pay, 測(cè)試的路徑是 https://dev.bixuebihui.com/other/pay 微信后臺(tái)綁定的是前一個(gè)路徑,但你想對(duì)自己的代碼按后一個(gè)路徑做測(cè)試,該怎么做 nginx 的配置呢?

閑話少說(shuō),上代碼,啊不,配置:

   servername bixuebihui.com;
     location  /pay {
              proxy_connect_timeout    3;
              proxy_read_timeout       30;
              proxy_set_header    X-Real-IP  $remote_addr;
              proxy_set_header    X-Forwarded-For     $remote_addr;
              proxy_set_header    X-Forwarded-Proto   $scheme;
              proxy_redirect   / /;
              add_header  X-Upstream  $upstream_addr;
              proxy_set_header Host $arg_domain;

              if ($arg_domain ~ "dev.bixuebihui.com" ){
                 proxy_pass https://your.private.dev.ip;
                 rewrite /pay/(.*) /other/pay/$1  break;
                 break;
              }
              proxy_pass http://your_super_cluster;
        }

說(shuō)明:

proxy_pass https://your.private.dev.ip; 這里要用 ip 比較好,因?yàn)?Host 是用 domain 控制的,如果也用 domain 會(huì)有安全問(wèn)題。 

"https://xxxx.weixin.qq.com/xxxapi?redirect_uri=https%3A%2F%2Fbixuebihui.com%2Fpay%3Fdomain%3Dhttps%253A%252F%252Fdev.bixuebihui.com%252Fother%252Fpay&other_params=xxxxxx " 傳給微信的參數(shù)進(jìn)行 url 轉(zhuǎn)義, 其中 domain 參數(shù)是可以被微信原樣返回,這樣就可以按你自己的需求完成反向代理了。

路徑改寫與域名的處理

上面的例子中,實(shí)際向服務(wù)器發(fā)起的請(qǐng)求,根據(jù)參數(shù)不同,可能被改寫,也可能不會(huì)

如訪問(wèn) bixuebihui.com/pay/abc.do 最終實(shí)際請(qǐng)求發(fā)送給http://your_super_cluster/pay/abc.do, 且 Host 參數(shù)為bixuebihui.com, 如果 your_super_cluster上 有多個(gè)虛擬主機(jī), 將會(huì)訪問(wèn)到主機(jī)頭為 bixuebihui.com 的一個(gè)或默認(rèn)的.

如訪問(wèn)的是 bixuebihui.com/pay/abc.do?domain=dev.bixuebihui.com
則最終請(qǐng)求會(huì)發(fā)給https://your.private.dev.ip/other/pay/abc.do?domain=dev.bixuebihui.com,且 Host 參數(shù)為 $arg_domain 的值,即 dev.bixuebihui.com.

如何處理 https

nginx 支持對(duì) https 的代理, 如果你的應(yīng)用服務(wù)器與 nginx 在一個(gè)子網(wǎng)內(nèi),建議直接在 nginx 上配置 https, 后端采用 http 協(xié)議, 這樣應(yīng)用服務(wù)器的壓力會(huì)小很多.

配置 https 協(xié)議現(xiàn)在有很多免費(fèi)證書(shū)可用. 最方便的要數(shù) certbot, 在這個(gè)網(wǎng)站上連注冊(cè)都不需要, 就可以為你的域名獲得證書(shū), 自動(dòng)支持對(duì) nginx 和 apache 等常見(jiàn) web 服務(wù)器進(jìn)行自動(dòng)配置, 完全傻瓜化使用. 一分鐘搞定真不是吹的. 2018 年 4 月左右將推出對(duì)通配二級(jí)域名的支持.到時(shí)候會(huì)更加方便. 真是良心網(wǎng)站.

參數(shù)與 redirect

如果你的網(wǎng)站有 302 這類的跳轉(zhuǎn),這時(shí)反向代理要設(shè)置成

   proxy_redirect   / /;

否則后端服務(wù)器有可能返回內(nèi)網(wǎng)跳轉(zhuǎn)路徑給瀏覽器, 造成無(wú)法訪問(wèn).

 nginx配置正確性測(cè)試 對(duì)生產(chǎn)環(huán)境的修改前先要備份

最好對(duì)現(xiàn)有的可能運(yùn)行的配置文件做備份,有兩種辦法,一是用版本管理系統(tǒng),如git ,參考這里,另一種方式是自己寫腳本來(lái)管理備份。

下面是我的備份腳本,供參考, 路徑要改成你自己的,這個(gè)腳本是以日期為擴(kuò)展名,如果你同一天需要多個(gè)備份請(qǐng)修改腳本,別掉坑里。

nginx_config_backup.sh

###################################################################
#######nginx_config_backup###################################################
#!/bin/sh
# -----------------------------
# the directory for story your backup file.
backup_dir="/home/yourname/backup"

# date format for backup file (dd-mm-yyyy)
time="$(date +"%Y%m%d")"

MKDIR="$(which mkdir)"
RM="$(which rm)"
MV="$(which mv)"
TAR="$(which tar)"
GZIP="$(which gzip)"

#針對(duì)不同系統(tǒng),如果環(huán)境變量都有。可以去掉
# check the directory for store backup is writable
test ! -w $backup_dir && echo "Error: $backup_dir is un-writeable." && exit 0

# the directory for story the newest backup
test ! -d "$backup_dir" && $MKDIR "$backup_dir"

$TAR -zcPf $backup_dir/$HOSTNAME.nginx.$time.tar.gz  /etc/nginx 

#delete the oldest backup 30 days ago
find $backup_dir -name "*.gz" -mtime +30 |xargs rm -rf
exit 0;
搭建測(cè)試環(huán)境

另一條運(yùn)維的原則是:不要在生產(chǎn)環(huán)境上直接改,在測(cè)試環(huán)境修改并經(jīng)過(guò)測(cè)試,測(cè)試通過(guò)后,再上傳到生產(chǎn)環(huán)境。

安裝擴(kuò)展包

$ sudo apt-get install nginx-extras

這樣你就可以使用 Lua, echo 這些方便調(diào)試的工具了。

echo使用很簡(jiǎn)單
在location 配置塊內(nèi):

 echo hello world;
 echo_flush;

詳細(xì)說(shuō)明看這里echo.

如果你是一個(gè)網(wǎng)管,代碼是別人寫的,且寫得很爛,怎么辦?為了能睡個(gè)安穩(wěn)覺(jué),你可安裝 nginx-naxsi 版本, "Nginx Anti Xss & Sql Injection". 損失一點(diǎn)效率,帶來(lái)的是更安全。不過(guò)這個(gè)版本在新的(15.04以后的)ubuntu里已經(jīng)不再提供更新了。需要話可能需要自已多帶帶設(shè)置安裝源。

修改了 nginx 的配置文件, 一定要先測(cè)試再重啟
nginx -t && service nginx reload

sudo service nginx configtest && sudo service nginx reload

debug 可以輸出更多信息

server {
    #other config
    error_log    /var/logs/nginx/example.com.error.log;
    location /admin/ { 
        error_log /var/logs/nginx/admin-error.log debug; 
    }         
    #other config
}

如果你的站長(zhǎng)訪問(wèn)量很大,這么做你的磁盤很快會(huì)被耗光, 也可以設(shè)置成只針對(duì)特定 IP 寫 debug 信息

events {
        debug_connection 1.2.3.4;
}

這里 1.2.3.4 是你要調(diào)試的 ip 地址,
想要獲得自己的外網(wǎng) ip,有一個(gè)網(wǎng)站很好用

curl http://httpbin.org/ip

這個(gè)網(wǎng)站上還有很多其他用來(lái)調(diào)試http協(xié)議應(yīng)用的api接口. 簡(jiǎn)單易用.

總結(jié)

nginx很強(qiáng)大, 詳細(xì)掌握nginx的用法能幫你少寫很多代碼, 維護(hù)一個(gè)更健康的網(wǎng)站.

如果有人感興趣, 下次可以討論一下nginx安全方面的應(yīng)用, 防抓取, 防攻擊等等.

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://m.specialneedsforspecialkids.com/yun/39798.html

相關(guān)文章

  • Nginx

    摘要:此外,其也能夠提供強(qiáng)大的反向代理功能。是由為俄羅斯訪問(wèn)量第二的站點(diǎn)開(kāi)發(fā)的,第一個(gè)公開(kāi)版本發(fā)布于年月日。 keepalived+nginx 實(shí)現(xiàn)高可用雙機(jī)熱備 + 負(fù)載均衡架構(gòu) 1 準(zhǔn)備4個(gè)ubuntu16.04虛擬機(jī)(啟用網(wǎng)卡二并使用橋接模式):A服務(wù)器:192.168.0.103 主B服務(wù)器:192.168.0.104 主(備) 前端工程師學(xué)習(xí) Nginx ...

    syoya 評(píng)論0 收藏0
  • 【沙龍報(bào)名中】微信&云開(kāi)發(fā)官方團(tuán)隊(duì)零距離互動(dòng),揭秘爆款微信小游戲背后的技術(shù)!

    摘要:在現(xiàn)如今的游戲市場(chǎng)寒冬中,擁有微信龐大的用戶量以及更好兼容性的小程序游戲,優(yōu)勢(shì)就顯得格外明顯。掃描二維碼即可報(bào)名您在現(xiàn)場(chǎng)將有這些體驗(yàn)來(lái)自騰訊云云開(kāi)發(fā)團(tuán)隊(duì)與微信團(tuán)隊(duì)聯(lián)合打造干貨分享,內(nèi)容包括微信小游戲首發(fā)經(jīng)驗(yàn)分享。 有人說(shuō)微信小程序游戲的百花齊放 活像十幾年前的4399小游戲稱霸互聯(lián)網(wǎng)的景象 歪,斗地主嗎,三缺二, 不用下app,小程序就能玩,我保證不搶地主讓你搶! ...... ‘...

    zhonghanwen 評(píng)論0 收藏0
  • 企業(yè)只能申請(qǐng)兩個(gè)微信公眾號(hào),微信開(kāi)發(fā)不夠用?不,一個(gè)公眾號(hào)就夠了!

    摘要:微信年月日發(fā)公告稱,個(gè)人主體注冊(cè)公眾號(hào)數(shù)量上限由個(gè)調(diào)整為個(gè)。大家都知道每個(gè)微信公眾號(hào)在進(jìn)行開(kāi)發(fā)時(shí),授權(quán)回調(diào)的域名只能設(shè)置一個(gè),正常的開(kāi)發(fā)一般一套環(huán)境就對(duì)應(yīng)一個(gè)域名。 微信2018年11月16日發(fā)公告稱,個(gè)人主體注冊(cè)公眾號(hào)數(shù)量上限由2個(gè)調(diào)整為1個(gè)。企業(yè)類主體注冊(cè)公眾號(hào)數(shù)量上限由5個(gè)調(diào)整為2個(gè)。這個(gè)對(duì)馬上要注冊(cè)公眾號(hào)的企業(yè)來(lái)說(shuō)頓時(shí)心情不好了。 大家都知道每個(gè)微信公眾號(hào)在進(jìn)行開(kāi)發(fā)時(shí),授權(quán)回調(diào)...

    wthee 評(píng)論0 收藏0
  • Docker 快速安裝&搭建 Ngnix 環(huán)境,并配置反向代理

    摘要:一下載鏡像我這里用的是輕量級(jí)的鏡像下載完成后,通過(guò)命令檢查一下鏡像是否下載成功二先以簡(jiǎn)單的方式運(yùn)行鏡像以后臺(tái)方式運(yùn)行鏡像指定容器的名稱為命令執(zhí)行完成后,通過(guò)命令確認(rèn)一下容器是否啟動(dòng)成功。 歡迎關(guān)注個(gè)人微信公眾號(hào): 小哈學(xué)Java, 文末分享阿里 P8 高級(jí)架構(gòu)師吐血總結(jié)的 《Java 核心知識(shí)整理&面試.pdf》資源鏈接!!個(gè)人網(wǎng)站: https://www.exception.sit...

    鄒強(qiáng) 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<