成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

基于域名的7層轉發的實現(NAT+反向代理)

運維 系統運維
在公司的實際辦公網中,因為出口IP只有一個,要實現對外提供服務的話就必須得做端口映射,如果有多個服務要對外開放的話,這只能通過映射不同端口來區分……

在公司的實際辦公網中,因為出口IP只有一個,要實現對外提供服務的話就必須得做端口映射,如果有多個服務要對外開放的話,這只能通過映射不同端口來區分,這在實際使用過程中非常的痛苦(記憶困難、一一對應關系也沒有規律、訪問的時候還得加端口),這個痛苦的問題用表格的形式來形象的描述如下:

Public IP

Public Port Number

Internal IP

Internal Port Number

Note

1.1.1.1

80

192.168.1.10

80

service A

1.1.1.1

81

192.168.1.11

80

service B

1.1.1.1

8080

192.168.1.25

80

service C

1.1.1.1

443

192.168.1.26

443

service D

1.1.1.1

444

192.168.1.35

443

service E

在需要對外開放的服務很多的情況下,NAT的方式雖然難用、難記,但至少還是能夠滿足需求的(可用端口要小于65535個),但如果A、B、C服務都想(或者必須)使用默認的80、443端口的話,在只有一個公網IP的情況下是沒法滿足的,如果能有一種如下的實現方式,那就完美了:

Domain Name

Public IP

Public Port Number

Internal IP

Internal Port Number

Note

A.example.com

1.1.1.1

80

192.168.1.10

80

service A

B.example.com

1.1.1.1

80

192.168.1.11

80

service B

C.example.com

1.1.1.1

80

192.168.1.25

80

service C

D.example.com

1.1.1.1

443

192.168.1.26

443

service D

E.example.com

1.1.1.1

443

192.168.1.35

443

service E

首先來分析一下,傳統NAT的話肯定是實現不了,因為NAT是3層ip加4層端口的方式做映射,而域名(如http header中)都屬于7層的內容,要實現的話只能借助支持7層http協議解析的工具實現,經過一番研究發現反向代理可以實現,那太好了,反響代理的工具一大堆:squid、apache、nginx、haproxy、mysql proxy等等,本文僅講基于http、https協議的實現,其他協議暫不討論。

有了工具的支持,接下來就得考慮考慮如何部署的問題:

(1)域名解析到路由器的公網ip-->在路由器(pfsense)上安裝squid-->配置反向代理(開啟http、https反向代理、主機映射、域名正則匹配轉發)-->成功實現(需要路由器支持);

(2)域名解析到路由器的公網ip-->在路由器上做傳統NAT,將80、443端口分別指向反向代理服務器-->配置反向代理服務器的-->成功實現(通用方法);

其中第一個方法我已經很好的實現http的反向代理,但對于https,由于squid不支持SNI(server name Indication),僅能支持一個https站點,且很多公司用的路由器可能不支持安裝squid軟件,所以接下來我主要介紹通用的方法:通過在linux上安裝nginx來搭建反向代理服務來支持基于域名的7層轉發。

下載openssl庫

  1. wget http://www.openssl.org/source/openssl-1.0.1h.tar.gz  
  2. tar xzvf openssl-1.0.1h.tar.gz  
  3. mv openssl-1.0.1h /usr/local/openssl-1.0.1h/ 

下載nginx,編譯時加入SNI的支持

  1. yum install pcre pcre-devel  
  2. yum install zlib zlib-devel  
  3.  
  4. wget http://nginx.org/download/nginx-1.6.0.tar.gz  
  5. tar xzvf nginx-1.6.0.tar.gz  
  6. cd nginx-1.6.0  
  7.  
  8. ./configure \  
  9. --user=nginx \  
  10. --group=nginx \  
  11. --with-http_ssl_module \  
  12. --with-openssl="/usr/local/openssl-1.0.1h/" \  
  13. --with-openssl-opt="enable-tlsext" \  
  14. --with-http_stub_status_module  
  15.  
  16. make  
  17. make install 

檢查nginx的安裝情況(關鍵TLS SNI support enabled):

  1. [root@svn ~]# /usr/local/nginx/sbin/nginx -V  
  2. nginx version: nginx/1.6.0  
  3. built by gcc 4.1.2 20080704 (Red Hat 4.1.2-54)  
  4. TLS SNI support enabled  
  5. configure arguments: --user=nginx --group=nginx --with-http_ssl_module --with-openssl=/usr/local/openssl-1.0.1h/ --with-openssl-opt=enable-tlsext --with-http_stub_status_module 

配置反向代理服務器:

  1. [root@svn ~]# more /usr/local/nginx/conf/nginx.conf  
  2. ############https server revese proxy  
  3. server {  
  4. listen 10010 ssl;  
  5. server_name app.wei.com;  
  6. #Set up your cert paths  
  7. ssl_certificate_key /usr/local/nginx/conf/ssl/app_wei.key;  
  8. ssl_certificate /usr/local/nginx/conf/ssl/app_wei.crt;  
  9. location / {  
  10. proxy_pass https://192.168.100.123;  
  11. }  
  12. }  
  13.  
  14. server {  
  15. listen 10010 ssl;  
  16. server_name secure.wei.com;  
  17. #Set up your cert paths  
  18. ssl_certificate_key /usr/local/nginx/conf/ssl/mars-server.key;  
  19. ssl_certificate /usr/local/nginx/conf/ssl/mars-server.crt;  
  20. location / {  
  21. proxy_pass https://192.168.100.177:443;  
  22. }  
  23. }  
  24. ############http server revese proxy  
  25. server {  
  26. listen 10086 ;  
  27. server_name secure.wei.com;  
  28. location / {  
  29. proxy_pass http://192.168.100.177;  
  30. }  
  31. }  
  32.  
  33. server {  
  34. listen 10086 ;  
  35. server_name dobby.wei.com;  
  36. location / {  
  37. proxy_pass http://192.168.100.148;  
  38. }  

路由器NAT映射:1.1.1.1:80-->反向代理的10086;1.1.1.1:443-->反向代理的10010

重啟nginx就可以使用了,效果對客戶端是完全透明的

➜ ~ curl -I https://app.wei.com

HTTP/1.1 200 OK

Server: nginx/1.6.0

Date: Sat, 26 Jul 2014 01:48:14 GMT

Content-Type: text/html

Connection: keep-alive

X-Powered-By: PHP/5.3.8

參考:

Using the Nginx Web Server as a Reverse Proxy: Multiple SSL Sites with a Single IP Address

http://www.informit.com/articles/article.aspx?p=1994795

[squid-users] Reverse proxy with multiple SSL sites

http://www.squid-cache.org/mail-archive/squid-users/201406/0102.html

原文鏈接:http://blog.csdn.net/xuyaqun/article/details/38259169

 

責任編輯:牛小雨 來源: 運維-來的博客
相關推薦

2012-02-15 00:32:27

haproxy負載均衡

2022-09-16 10:00:31

端口服務器

2018-11-12 12:17:00

2024-07-22 15:34:25

2018-12-03 08:42:02

反向代理層DNS輪詢架構

2024-04-26 09:04:13

2018-12-24 08:48:14

NginxApache Cookie

2010-06-12 18:00:16

ARP協議

2023-09-08 00:07:41

2023-07-10 09:48:30

Nginx反向代理

2022-07-01 07:33:24

nginx反向代理測試

2021-11-24 08:55:38

代理網關Netty

2021-09-30 09:44:13

BFE路由機制

2016-01-05 11:05:19

PaaS7層動態路由nginx

2017-12-18 12:04:02

Nginx代理均衡

2017-05-23 16:13:45

2024-01-31 09:11:16

HaproxyHttpTCP

2024-04-02 12:36:01

2018-10-14 08:39:52

NginxTomcat服務器

2016-09-07 18:57:48

點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 日韩精品在线一区 | 成人免费激情视频 | 国产美女精品视频 | 在线午夜 | 成人欧美一区二区三区在线观看 | 成人久久久久 | 亚洲网在线 | 欧美爱爱视频 | 成人精品毛片国产亚洲av十九禁 | 最新一级毛片 | 欧美日韩中文字幕在线 | 亚洲a视频 | 成人激情视频网 | 亚洲精品一区二区三区蜜桃久 | 免费激情网站 | 久久夜视频 | 亚洲国产成人精品女人久久久 | 亚洲成人av | 久热精品免费 | 亚洲精品小视频在线观看 | 天天艹日日干 | 日韩欧美国产精品一区二区 | 久久国产精品视频 | 亚洲欧美一区二区三区视频 | 国产精品免费一区二区 | 91色视频在线 | 久久鲁视频 | 国产日韩精品久久 | 二区国产 | 久久伦理中文字幕 | av在线播放不卡 | 久久久99精品免费观看 | 欧美一区二区三区 | 日韩一区中文字幕 | 玖玖国产| 91视频国产一区 | 午夜影院中文字幕 | 日韩不卡一二区 | 久久精品国产久精国产 | 亚洲人精品午夜 | 国产目拍亚洲精品99久久精品 |