1. 程式人生 > >apache反向代理配置(反向代理連線的是IIS)

apache反向代理配置(反向代理連線的是IIS)

apache伺服器的代理功能分為正向代理及反向代理:

1.正向代理:也就是我們通常所說的代理伺服器,只用於代理內部網路對Internet的連線請求。客戶機必須指定代理伺服器,並將本來要直接傳送到Web伺服器上的http請求傳送到代理伺服器中。

2.反向代理:指以代理伺服器來接受internet上的連線請求,然後將請求轉發給內部網路上的伺服器,並將從伺服器上得到的結果返回給internet上請求連線的客戶端,此時代理伺服器對外就表現為一個伺服器。

apache2.2以後可以通過自帶的mod_proxy模組配置反向代理伺服器。apache的mod_proxy模組的配置詳細資訊見官方文件:http://apache.jz123.cn/mod/mod_proxy.html

本例中,機器192.168.1.110是安裝了apache的reverse proxy server,apache執行在8080埠,域名www.whutest.net

機器192.168.1.120是安裝了IIS6的伺服器,IIS執行在8080埠(因為專案原因,該伺服器不能直接開放,只能通過110機器向外開放)

要實現的效果是訪問www.whutest.net:8080及相當於訪問192.168.1.120:8080

修改步驟:

1.修改apache的配置問價httpd.conf,載入apache的代理相關模組

LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_ajp_module modules/mod_proxy_ajp.so
LoadModule proxy_connect_module modules/mod_proxy_connect.so
LoadModule proxy_ftp_module modules/mod_proxy_ftp.so
LoadModule proxy_http_module modules/mod_proxy_http.so

2.配置虛擬主機
<VirtualHost *:8080>#apache的監控埠
ServerAdmin [email protected]
ServerName www.whutest.net
ProxyPreserveHost On #當啟用時,此選項將把傳入請求的"Host:"行傳遞給被代理的主機,而不是傳遞在ProxyPass中指定的主機名。
ProxyRequests Off #反向代理為Off
<Proxy *>
Order deny,allow
Allow from all
</Proxy>
ProxyPass / http://192.168.1.120:8080/ #IIS埠8080,把地址www.whutest.net:8080下所有請求都代理到192.168.1.120:8080
ProxyPassReverse / http://192.168.1.120:8080/ #配置該項,隱藏具體IP地址192.168.1.120
</VirtualHost>

到此,反向代理配置結束,重啟apache,配置生效。訪問www.whutest.net:8080即可看到伺服器192.168.1.120上的內容。

在實際的配置中,原本IIS伺服器上的部署的WEB專案(.NET 2.0)所在的埠是預設的80埠,在反向代理轉發的時候,由於我們的系統使用了單點登入,在跳轉的時候,發現反向代理的地址在跳轉到登入中由www.whutest.net:8080變成了www.whutest.net,反向代理埠丟失,頁面跳轉失敗,直接404 not found了。

在這個問題上糾結了兩天,之後檢視IIS上專案的程式碼發現有這麼一段程式碼:string serviceUrl = Request.Url.GetLeftPart(UriPartial.Path);在日誌中發現這個serviceUrl獲取到的URL地址跟反向代理中的地址不太一樣,假如反向代理的地址是www.whutest.net:8080,而我們IIS上真實的埠是80的話,這裡的serviceUrl獲取的則是www.whutest.net:80,丟失了代理的埠,獲取的實際上是自己真實的埠80,這樣跳轉的URL能對才怪!

最後把反向代理以及IIS上的埠統一為8080之後,反向代理正常工作。

絕對是大坑啊,記錄下來備用。。。不明白是配置的apache反向代理哪裡出了問題或者.net 2.0 Request.Url的問題。

tips:使用apache反向代理IIS, 當IIS專案中有使用Request.Url.GetLeftPart(UriPartial.Path)進行URL跳轉之類邏輯時,請確保apache反向代理的埠與IIS真實埠保持相同。

相關推薦

apache反向代理配置反向代理連線的是IIS

apache伺服器的代理功能分為正向代理及反向代理: 1.正向代理:也就是我們通常所說的代理伺服器,只用於代理內部網路對Internet的連線請求。客戶機必須指定代理伺服器,並將本來要直接傳送到Web伺服器上的http請求傳送到代理伺服器中。 2.反向代理:指以代理伺服器來

Nginx反向代理配置解決跨域問題

一. 跨域    指的是瀏覽器不能執行其他網站的指令碼。它是由瀏覽器的同源策略造成的,是瀏覽器對 JavaScript 施加的安全限制。 實際開發過程中表現為,如果本地的Html程式碼未提交到伺服器,本地是不能直接呼叫伺服器 API 獲取資料的。 二. Nginx

Apache Shiro學習----配置與SpringMVC集成

async 匹配 過濾 -i fig hit http struct 找到 1.web.xml文件中配置 <!--將shiro的配置文件交給Spring監聽器初始化--> <context-param> <param

nginx.conf 配置 反向代理,負載均衡,fastdfs model)

sta remote lena processes ngx type pem events timeout #user nobody;worker_processes 1; #error_log logs/error.log;#error_log logs/error

nginx反向代理配置包括ssl,https永久跳轉

1、web機器配置nginx檔案 worker_processes 1; events { worker_connections 1024; } http { include mime.types; default_type applicatio

2017.7.1 nginx反向代理伺服器域名解析配置已驗證可使用

 前提:ftpserver已經開啟,並且設定為: 1.獲得安裝檔案  2.修改配置檔案 2.1 修改conf/nginx.conf 引入此資料夾內的配置檔案。   2.2 vhost資料夾 新建資料夾:vhost和相關配置檔案。  2.3 資料夾轉發 vh

Nginx之反向代理配置

  前文我們聊了下Nginx作為web伺服器配置https、日誌模組的常用配置、rewrite模組重寫使用者請求的url,回顧請參考https://www.cnblogs.com/qiuhom-1874/p/12398242.html;今天來聊一聊Nginx是怎麼反向代理,怎麼防盜鏈;前文的最後我們提到了防盜

Nginx之反向代理配置

  前文我們聊了Nginx的防盜鏈、反向代理以及開啟nginx代理快取,回顧請參考https://www.cnblogs.com/qiuhom-1874/p/12417130.html;今天我們繼續說nginx的反向代理,上一篇主要就說了下nginx反向代理http協議的使用,被代理RUL包含和不包含RUI的

webpack+vue-cli中代理配置proxyTable

info ubd 技術 ets conf local src nod mage 在做vue的項目時,用到webpack打包工具,我們會發現本地開發開啟的node服務地址請求接口的地址存在跨域問題。本地開啟的服務地址是 http://localhost:8080 而服務器

Mybatis Generator反向生成配置詳解

<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE generatorConfiguration PUBLIC "-//mybatis.org//DTD MyBatis Generator Configuration 1.0//EN

網路代理配置Centos7

一、全域性代理設定 如果是裝有GNOME桌面的CentOS7,可以通過系統的Settings–>Network proxy來進行設定,如下:  但使用最小安裝,或者不想通過介面來設計代理時,可通過修改/etc/profile檔案來實現,如下: 但是我配置的時候

java 代理模式靜態代理、動態代理、Cglib代理 轉載

cas 代理人 缺點 intercept 必須 lan itcast 技術 有時 Java的三種代理模式 1.代理模式 代理(Proxy)是一種設計模式,提供了對目標對象另外的訪問方式;即通過代理對象訪問目標對象.這樣做的好處是:可以在目標對象實現的基礎上,增強額外的功能操

代理模式靜態代理和動態代理

Java 靜態代理 靜態代理通常用於對原有業務邏輯的擴充。比如持有二方包的某個類,並呼叫了其中的某些方法。然後出於某種原因,比如記錄日誌、列印方法執行時間,但是又不好將這些邏輯寫入二方包的方法裡。所以可以建立一個代理類實現和二方方法相同的方法,通過讓代理類持有真實物件,然後在原始碼中呼叫代理類方法,

TP路由和Apache的相關配置本機wamp整合環境

本地配置wamp整合環境 部署一個tp專案 www.dev.com可以訪問,www.dev.com/index/index/index 就不能訪問  找到apache的安裝目錄下的conf下的httpd.conf檔案,開啟檔案修改 LoadModule rewrite_module m

java設計模式--代理模式靜態,jdk,cglib

設計思路:  代理(Proxy)是一種設計模式,提供了對目標物件另外的訪問方式;即通過代理物件訪問目標物件.這樣做的好處是:可以在目標物件實現的基礎上, 增強額外的功能操作,即擴充套件目標物件的功能.這裡使用到程式設計中的一個思想:不要隨意去修改別人已經寫好的程式碼或

設計模式之禪學習筆記09--代理模式動態代理

1.動態代理     動態代理還是屬於設計模式--代理模式的一種,代理類在程式執行時建立的代理方式被成為動態代理。動態代理是在實現階段不用關心代理誰,而在執行階段才指定代理哪一個物件。相對來說,自己寫代理類的方式就是靜態代理。現在有一個非常流行的名稱叫做面向橫切面程式設計,也

【Java必會】一個保姆與兩隻寵物的“代理”故事動態代理

文章導航: 文章目的: 1、介紹什麼是代理 2、如何理解“代理” 3、代理有哪些實現方式 什麼是代理? 在講解Java代理之前我們先要搞明白什麼是“代理”? 代理:法律上指以他人的名義,在授權範圍內進行對被代理人直接發生法律效力的法律行為。 1.短時間代人擔任職

動態代理模式例項化詳解

簡介 代理模式通常用於達到對原有系統功能進行擴充的目的 比如:你剛接手一個別人沒有完成的專案,這是你不想動別人原理的程式碼,還需要新增新功能。這時代理模式,這時代理模式,這時代理模式會很好的幫助解決問題 代理模式分為兩種: 靜態代理模式 、 動態代理模式 靜態代理 靜態代理一般是

設計模式--代理模式動態代理

代理模式是常用的java設計模式,他的特徵是代理類與委託類有同樣的介面,代理類主要負責為委託類預處理訊息、過濾訊息、把訊息轉發給委託類,以及事後處理訊息等。代理類與委託類之間通常會存在關聯關係,一個代理類的物件與一個委託類的物件關聯,代理類的物件本身並不真正實現服務,而是通過

resnet的反向傳播推導對權重的更新

論文:Identity Mappings in Deep Residual Networks 其中對resnet反向傳播進行了分析,給出以下公式:  但是反向傳播是為了對權重和偏置進行更新,論文中只是分析了對特徵x的梯度。 自己對權重的梯度做了分析。 以一個小的示例表