使用nginx反向代理,一個80埠下,配置多個微信項目

来源:http://www.cnblogs.com/itslives-com/archive/2017/01/03/nginx-backend.html
-Advertisement-
Play Games

我們要接入微信公眾號平臺開發,需要填寫伺服器配置,然後依據介面文檔才能實現業務邏輯。但是微信公眾號介面只支持80介面(80埠)。我們因業務需求需要在一個公眾號功能變數名稱下麵,發佈兩個需要微信授權的項目,怎麼辦? 我們可以用nginx伺服器做反向代理來解決這個問題。nginx伺服器對外80埠,然後根據U ...


  我們要接入微信公眾號平臺開發,需要填寫伺服器配置,然後依據介面文檔才能實現業務邏輯。但是微信公眾號介面只支持80介面(80埠)。我們因業務需求需要在一個公眾號功能變數名稱下麵,發佈兩個需要微信授權的項目,怎麼辦?

  我們可以用nginx伺服器做反向代理來解決這個問題。nginx伺服器對外80埠,然後根據URL參數不同,對內訪問不同的項目。

  

  nginx配置如下:

  打開/usr/local/nginx/conf/nginx.conf

 1 worker_processes  4;
 2 error_log  logs/error.log;
 3 events {
 4     worker_connections  1024;
 5 }
 6 http {
 7     include       mime.types;
 8     default_type  application/octet-stream;
 9     sendfile        on;
10     keepalive_timeout  65;
11 
12 gzip on;
13 gzip_min_length 1k;
14 gzip_buffers 16 64k;
15 gzip_http_version 1.1;
16 gzip_comp_level 6;
17 gzip_types text/plain application/x-javascript text/css application/xml application/javascript;
18 gzip_vary on;
19 
20     #指向項目一
21     upstream backend1  {
22         server  192.168.1:8081;
23     }
24     #指向項目二
25     upstream backend2{
26         192.168.1.1:8082;
27     }
28     proxy_cache_path /tmp/cache levels=1:2 keys_zone=cache:128m inactive=1d  max_size=1G;
29     include vhosts/*;
30 }
View Code

  打開/usr/local/reverse_proxy_nginx/conf/nginx.conf

 1 worker_processes  2;
 2 events {
 3     worker_connections  1024;
 4 }
 5 http {
 6     include       mime.types;
 7     default_type  application/octet-stream;
 8     access_log  /home/nginx_log/reverse_proxy_no1_access.log;
 9     sendfile        on;
10     keepalive_timeout  65;
11     upstream backend1  {
12         #server 192.168.1.1:8181;
13     server  192.168.1.1:8081;
14     }
15     upstream backend2  {
16         #server 192.168.1.1:8082;
17     server  192.168.1.1:8082;
18     }
19     proxy_cache_path /tmp/cache levels=1:2 keys_zone=cache:128m inactive=30m  max_size=1G;
20     server {
21         listen       8081;
22         server_name  h5.xxxx.com;
23 
24         location / {
25                 proxy_pass http://backend1;
26             #Proxy Settings
27                proxy_redirect     off;
28              proxy_set_header   Host             $host;
29             proxy_set_header   X-Real-IP        $remote_addr;
30             proxy_set_header   X-Forwarded-For  $proxy_add_x_forwarded_for;
31             proxy_next_upstream error timeout invalid_header http_500 http_502 http_503 http_504;
32             proxy_max_temp_file_size 0;
33             proxy_connect_timeout      90;
34             proxy_send_timeout         90;
35             proxy_read_timeout         90;
36             proxy_buffer_size          4k;
37             proxy_buffers              4 32k;
38             proxy_busy_buffers_size    64k;
39             proxy_temp_file_write_size 64k;
40         add_header Nginx-Res "http://backend1";
41         }
42 
43         location ~ ^/(h5)(.*)$ { 
44               proxy_pass  http://backend2;
45               proxy_redirect off;
46               proxy_set_header Host $host;
47               proxy_cache cache;
48               proxy_cache_valid 200 302 1d;
49               proxy_cache_valid 301 1d;
50               proxy_cache_valid any 1m;
51               expires 1h;
52           add_header Nginx-Res "http://backend2";
53               proxy_ignore_headers "Cache-Control" "Expires" "Set-Cookie";
54               add_header Nginx-Cache "$upstream_cache_status";
55           }
56 
57         
58         error_page   500 502 503 504  /50x.html;
59         location = /50x.html {
60             root   html;
61         }
62     location ~ .*\.(gif|jpg|png|css|js|ico)(.*) {
63               proxy_pass http://backend1;
64               proxy_redirect off;
65               proxy_set_header Host $host;
66               proxy_cache cache;
67               proxy_cache_valid 200 302 30d;
68               proxy_cache_valid 301 1d;
69               proxy_cache_valid any 1m;
70               expires 30d;
71               proxy_ignore_headers "Cache-Control" "Expires" "Set-Cookie";
72           add_header Nginx-Res "http://backend1";
73               add_header Nginx-Cache "$upstream_cache_status";
74         }
View Code

  當我們打開URL包含h5時,就會跳到8081埠項目中,但是對外還是80埠。所以兩個項目可以同時實現微信授權登錄等。

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 一、共用庫 共用庫使得可執行文件中不再需要包含常用的庫函數,而只需在所有進程都可存取的存儲區中保存這種庫常式的一個副本。程式第一次執行的時候或第一次調用某個庫函數的時候,用動態鏈接方法將程式與共用庫函數相鏈接,這減少了每個可執行文件的長度,但增加了一些運行時間開銷。另一個優點就是可以用庫函數的新版本 ...
  • 一. 準備工作 1. 樹莓派主板 型號:樹莓派3 B型 處理器:四核64位ARM Cortex-A53 CPU 內核架構:ARMv8 2. 一張大於8G的TF卡(本人用的是32G的,也作為PiLFS用) 3. 一臺筆記本電腦,一根網線 4. 點擊此找到並下載 Raspbian 系統 初學者建議推薦選 ...
  • 什麼是Vim? Vim 是經典的 UNIX 編輯器 Vi 的深度改良版本。它增加了許多功能,包括:多級撤銷、格式高亮、命令行歷史、線上幫助、拼寫檢查、文件名補完、塊操作、腳本支持,等等。除了字元界面版本之外,它也有圖形界面版本(比如 gVim)。雖然 Vi 還在繼續維護當中,但是大部分人都只在使用 ...
  • 最近看到Arduino可以利用pwm及蜂鳴器播放音樂,想到樹莓派上也有類似的pwm輸出,所以決定把相應的內容移植到樹莓派上,並給出了樹莓派播放鐵血丹心的例子! ...
  • 1、到Oracle公司的官網裡下載好jdk,網址 http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html 2、把下載好的jdk上傳到Linux系統里,這裡我藉助了一個工具WinSCP 3、 ...
  • 1、下載好VMware 2、準備好CentOS的鏡像文件 3、打開VMware創建新的虛擬機 選擇自定義高級後按下一步 繼續下一步 選擇稍後安裝操作系統 客戶機操作系統選擇Linux,版本選擇CentOS 64位(我的是64位的CentOS) 設置虛擬機名稱和安裝路徑 分配處理器 設置虛擬機的記憶體 ...
  • 1.Nginx安裝環境: gcc: 安裝nginx需要先將官網下載的源碼進行編譯,編譯依賴gcc環境,如果沒有gcc環境,需要安裝gcc:yum install gcc-c++ pcre:<!--[if gte mso 9]><xml> <o:OfficeDocumentSettings> <o:A ...
  • 第八節 Linux 文件的屬性(上半部分) 標簽(空格分隔):Linux實戰教學筆記 第1章 Linux中的文件 1.1 文件屬性概述(ls lhi) linux里一切皆文件 Linux系統中的文件或目錄的屬性主要包括:索引節點(inode),文件類型,許可權屬性,鏈接數,所歸屬的用戶和用戶組,最近修 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...