操屁眼的视频在线免费看,日本在线综合一区二区,久久在线观看免费视频,欧美日韩精品久久综

新聞資訊

    indows系統要限制阻止外網IP訪問本機,即禁止外網身份的IP對本機進行通信,但又不影響本局域網IP對本機的通信,也不影響本機訪問外網的話:

    windows防火墻--高級設置--入站規則--新建規則--自定義--(默認)所有程序--(默認)任何協議--此規則應用于哪些本地IP(即局域網IP,選下列IP,IP列表添加亂填一個沒在用的),此規則應用于哪些遠程IP(即外網IP,選任何IP)--阻止連接--名字命名為阻止外網IP訪問本機。

    在網絡環境中,有時候我們需要讓局域網內的電腦訪問外網,但是由于網絡策略或其他原因,直接訪問外網是不可行的。這時候,可以借助 Nginx 來搭建一個正向代理服務器,實現局域網內電腦通過 Nginx 轉發訪問外網的需求。

    在工作中我遇到了一個類似的情況:在公司網絡中,由于管理要求,局域網內的電腦不能直接訪問外網。但是,工作上領導吩咐需要讓局域網內的電腦能夠訪問外網上的某個網站,這時候就需要用到正向代理。本文將介紹如何配置 Nginx 實現這一功能。

    準備工作

    首先,我們需要一臺可以訪問外網的服務器,例如一臺服務器、電腦或者虛擬機。確保該服務器已經安裝了 Nginx,并且網絡配置正確。

    我這里是有一臺服務器是可以正常訪問外網的(IP:192.168.0.10),同時局域網內的其他電腦也可以訪問這臺服務器。

    修改nginx.conf

    worker_processes  1;
    
    events {
        worker_connections  1024;
    }
    
    http {
        include       mime.types;
        default_type  application/octet-stream;
        sendfile        on;
    
        keepalive_timeout  65;
    
    	# 正向代理配置內容
    	server {
    		 listen 9000;	# 監聽端口
    		 server_name localhost;
    		
    		set $url "proxy_server_doman_or_ip";	# 設置代理的域名或IP變量,這里替換成自己需要代理的網站
    		 location / {
    		     proxy_pass http://$url:8082;	# 將請求轉發到由 $url 變量表示的地址。
    		 }
    	}
    }
    

    重啟nginx,打開局域網電腦測試訪問:192.168.0.10:9000,網頁跳轉成功。不就是請求轉發嘛,so easy!

    問題解決?如果這么簡單我就不寫這篇文章了

    果然第二天就出問題了,有同事反饋網站進不去了。我想不可能吧,一測試果然不行。果斷查閱了一下資料,找到問題原因:nginx在進行域名轉發時會先把域名解析成IP保存在內存中,后面的訪問都是通過IP直接訪問,如果目標網站的 IP 地址發生變化,我們的代理就會失效。

    找到原因就好辦了,添加域名解析功能嘛

    域名解析

    為了解決 IP 地址變化的問題,我們可以使用域名解析來動態獲取目標網站的 IP 地址。直接奉上完整配置,修改 Nginx 配置如下

    # 設置Nginx啟動一個工作進程,這是Nginx的一個核心設置,它決定了Nginx會使用多少個工作進程來處理客戶端請求。
    worker_processes  1;		
    
    # 配置定義了Nginx如何處理事件,例如連接請求,數據傳輸等
    events {
        worker_connections  1024;		# 定義了每個工作進程允許的最大并發連接數。
    }
    
    # HTTP模塊的配置塊,包含了HTTP服務器的一般配置
    http {
        include       mime.types;
        default_type  application/octet-stream;
        sendfile        on;
    
        keepalive_timeout  65;
    
    	# 正向代理配置內容
    	server {
    		 listen 9000;	# 監聽端口
    		 server_name localhost;
    
    		# 設置DNS解析器的地址為8.8.8.8,并且設置了解析器的緩存時間為300秒(這樣每隔300s就會重新解析一次)。ipv6=off 是關閉IPv6的解析支持。
    		resolver 8.8.8.8 valid=300 ipv6=off; 
    		resolver_timeout 3s;	# 設置解析DNS的超時時間為3秒
    		
    		proxy_read_timeout 60s;
    		proxy_send_timeout 60s;
    		proxy_connect_timeout 60s;
    		
    		set $url "proxy_server_doman_or_ip";	# 設置代理的域名或IP變量,這里替換成自己需要代理的網站
    		 location / {
    			proxy_pass http://$url:9000;	# 將請求轉發到由 $url 變量表示的地址。9000是目標網站的端口。
    			
    			proxy_buffers 256 4K;		# 設置用于緩存后端響應的緩沖區大小為256個,每個大小為4K。
    			proxy_max_temp_file_size 0;		# 設置Nginx暫存響應數據的最大臨時文件大小為0,即不使用臨時文件。
    			proxy_cache_valid 200 302 1m; 	# 針對狀態碼為200和302的響應,設置緩存有效期為1分鐘。
    			proxy_cache_valid 301 1h;		# 針對狀態碼為301的響應,設置緩存有效期為1小時。
    			proxy_cache_valid any 1m;	# 對于其他任何響應狀態碼,設置緩存有效期為1分鐘。
    		 }
    	}
    }
    

    重啟nginx,問題解決。到這里,正向代理功能就實現了。如果只想實現正向代理功能看到這里就可以了。后面是我在遇到問題時的一些調試經驗技巧!

    轉發代理調試

    我在實現代理后,發現正向代理響應的速度非常慢有時候需要一分鐘才能響應結果。但有時候又很快。就好奇為啥會這樣,為了方便調試和監控,我設置添加了Nginx 的訪問日志。

    修改 Nginx 配置如下:

    # 設置日志記錄格式
    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                        '$status $body_bytes_sent "$http_referer" '
                        '"$http_user_agent" "$http_x_forwarded_for"' 'upstreamIP: $upstream_addr' 'upgrade: $http_upgrade';
    
    # 正向代理配置內容
    	server {
    		 listen 9000;	# 監聽端口
    		 server_name localhost;
    
    		# 設置DNS解析器的地址為8.8.8.8,并且設置了解析器的緩存時間為300秒(這樣每隔300s就會重新解析一次)。ipv6=off 是關閉IPv6的解析支持。
    		resolver 8.8.8.8 valid=300 ipv6=off; 
    		resolver_timeout 3s;	# 設置解析DNS的超時時間為3秒
    		
    		proxy_read_timeout 60s;
    		proxy_send_timeout 60s;
    		proxy_connect_timeout 60s;
    		
    		set $url "proxy_server_doman_or_ip";	# 設置代理的域名或IP變量,這里替換成自己需要代理的網站
    		 location / {
    			proxy_pass http://$url:9000;	# 將請求轉發到由 $url 變量表示的地址。9000是目標網站的端口。
    			
    			proxy_buffers 256 4K;		
    			proxy_max_temp_file_size 0;		
    			proxy_cache_valid 200 302 1m; 
    			proxy_cache_valid 301 1h;		
    			proxy_cache_valid any 1m;	
    			
    			access_log logs/proxy/access.log main;		# 定義了訪問日志的路徑和格式。
    		    error_log logs/proxy/error.log;		# 定義了錯誤日志的路徑
    		 }
    	}
    

    這樣,Nginx 將會在nginx項目下的 logs/proxy/access.log 文件中記錄所有代理轉發日志。

    日志信息:

    192.168.0.28 - - [27/Feb/2024:17:02:03 +0800] "GET /prod-api/system/todo/listAll?pageNum=1&pageSize=10&active=true HTTP/1.1" 200 64 "http://192.168.20.2:8082/user-task/todo" "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:123.0) Gecko/20100101 Firefox/123.0" "-"upstreamIP: 182.148.159.30:8082
    192.168.0.28 - - [27/Feb/2024:17:02:03 +0800] "GET /prod-api/process/business/listAll?pageNum=1&pageSize=10&active=true HTTP/1.1" 200 979 "http://192.168.20.2:8082/user-task/todo" "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:123.0) Gecko/20100101 Firefox/123.0" "-"upstreamIP: 182.148.159.30:8082
    192.168.0.28 - - [27/Feb/2024:17:02:06 +0800] "GET /prod-api/system/user/select HTTP/1.1" 499 0 "http://192.168.20.2:8082/login?redirect=%2Findex" "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:123.0) Gecko/20100101 Firefox/123.0" "-"upstreamIP: 172.16.30.6:8082

    通過日志信息可以看到,請求轉發后的upstreamIP有兩個不同的IP:182.148.159.30和172.16.30.6,說明請求被轉發到了兩個不同的IP,當請求IP為182.148.159.30時,響應正常;當請求IP為172.16.30.6時,響應失敗導致等待。

    發現這個情況后,我也是很疑惑為啥會將域名解析出兩個IP,第一反應是域名解析錯誤,為了驗證我將DNS解析的服務器換成了離我最近的四川電信服務器:61.139.2.69,測試發現結果也是一樣的。雖然感覺解析是沒有問題的,保險起見我還是自己在網上通過解析網站測試了一下域名解析的結果:結果顯示域名確實綁定了兩個IP,一個是正常的一個是不行的。

    然后我就聯系我們這個域名對應網站的負責人,得出的結果就是他們確實綁定了兩個IP,有一個IP是綁定的內網IP,所以才導致外網請求時失效。

    失敗的原因:nginx獲取解析后的IP是通過輪詢往IP轉發請求,如果輪詢到內網IP就會導致請求失敗。

    解決辦法:

    1. 手動選擇IP地址:在Nginx配置中,你可以手動指定代理的目標IP地址,而不是使用解析出的IP地址。這樣可以避免將請求發送到內網IP。
    2. 使用域名解析出的IP地址進行請求:你可以通過解析域名獲取到的IP地址列表,然后使用一些方法(比如按照某種規則選擇IP地址)來保證請求不會發送到內網IP地址。
    3. 使用nginx的upstream模塊進行負載均衡:通過upstream模塊,你可以指定多個代理服務器,然后使用一定的負載均衡策略,比如輪詢、權重等,來分配請求到不同的服務器。在這里,你可以手動配置upstream模塊,指定外網IP,而不包括內網IP。
    4. 修改DNS設置:聯系網站負責人,修改域名解析,只將外網IP綁定到域名上,而不包括內網IP。

    你們猜我最后咋解決的???

    必須是第四條啊!!!

    、Route命令簡介:

      可以在cmd控制臺(按Win+R后,在運行中輸入cmd),輸入route print查看幫助信息

    二、Route常用命令介紹:

    1、查看路由表 route print

    • 要查看完整路由表,請鍵入:route print
    • 要查看IPV4路由表,請鍵入:route print -4
    • 要查看IPV6路由表,請鍵入:route print -6
    • 要查看IP路由表中以 10. 開始的路由,請鍵入:route print 10.*

    2、添加路由 route add

    • 要添加默認網關地址為 192.168.1.1 的默認路由,請鍵入:route add 0.0.0.0 mask 0.0.0.0 192.168.1.1
    • 要添加默認網關地址為 192.168.1.1 的默認永久路由,請鍵入:route add 0.0.0.0 mask 0.0.0.0 192.168.1.1 -p
    • 要添加目標為 10.2.2.100,子網掩碼為 255.255.0.0,下一個躍點地址為 10.2.2.1 的路由,請鍵入:route add 10.2.2.100 mask 255.255.0.0 10.2.2.1
    • 要添加目標為 10.2.2.100,子網掩碼為 255.255.0.0,下一個躍點地址為 10.2.2.1 的永久路由,請鍵入:route add 10.2.2.100 mask 255.255.0.0 10.2.2.1 -p
    • 要添加目標網段為 10.2.2.0,子網掩碼為 255.255.0.0,下一個躍點地址為 10.2.2.1 的永久路由,請鍵入:route add 10.2.2.0 mask 255.255.0.0 10.2.2.1 -p

    3、刪除路由 route delete

    • 要刪除目標為 10.2.2.100,子網掩碼為 255.255.0.0 的路由,請鍵入:route delete 10.2.2.100 mask 255.255.0.0
    • 要刪除目標為 10.2.2.100的所有路由,請鍵入:route delete 10.2.2.100
    • 要刪除目標為 10.2.2.100,子網掩碼為 255.255.0.0 的路由,請鍵入:route delete 10.2.2.100 mask 255.255.0.0
    • 要刪除 IP 路由表中以 10. 開始的所有路由,請鍵入:route delete 10.*
    • 要刪除默認路由,請鍵入:route delete 0.0.0.0

    4、改變路由 route change

    要將目標為 10.2.2.100,子網掩碼為 255.255.0.0 的路由的下一個躍點地址由 10.2.2.1 更改為 10.2.3.1,請鍵入: route change 10.2.2.100 mask 255.255.0.0 10.2.3.1

    三、配置示例:

    1、前置條件:
      兩張網卡,一張用于內網,一張用于上外網。假如內網網關10.2.2.1-----外網網關192.168.1.1。需要知道內網需要訪問的網頁或者軟件服務器IP,這里把內網需要訪問的IP認定為10.2.2.100。

    2、具體配置示例:
    第一種情況:雙網卡內外網都是靜態分配的。
      電腦內網卡設置為IP地址:10.2.2.115 子網掩碼:255.255.255.0 網關留空。外網設置為IP地址:192.168.1.2 子網掩碼:255.255.255.0 網關:192.168.1.1。

      靜態路由只寫一條
      route add -p 10.2.2.100 mask 255.255.255.0 10.2.2.1


    第二種情況:雙網卡內網靜態分配,外網自動獲取。
      電腦內網卡設置為IP地址:10.2.2.115 子網掩碼:255.255.255.0 網關留空。外網自動獲取。
      靜態路由寫法
      route add -p 10.2.2.100 mask 255.255.255.0 10.2.2.1


    第三種情況:雙網卡內網自動獲取,外網靜態分配。
      內網卡自動獲取,外網IP設置為IP地址:192.168.1.2 子網掩碼:255.255.255.0 網關:192.168.1.1
      現在只寫靜態路由就不行了。請往下看
      route delete 0.0.0.0
      route add 0.0.0.0 mask 0.0.0.0 192.168.1.1
      route add 10.2.2.100 mask 255.255.255.0 10.2.2.1
      但是呢這個路由都不是永久路由,每次重啟或者插拔網卡后都會影響使用,個人建議把這三條命令輸入到.bat 文件里面放入到電腦的啟動文件夾,這樣每次開機都會運行一下這個命令。插拔過網卡后也注意要運行下這三條命令。


    第四種情況:雙網卡內外網都是自動獲取
      內外網ip不進行設置
      靜態路由設置方法也是完全同情況三,也需要注意把,命令加到開機啟動那
      route delete 0.0.0.0
      route add 0.0.0.0 mask 0.0.0.0 192.168.1.1
      route add 10.2.2.100 mask 255.255.255.0 10.2.2.1
      但是呢這個路由都不是永久路由,每次重啟或者插拔網卡后都會影響使用,個人建議把這三條命令輸入到.bat 文件里面放入到電腦的啟動文件夾,這樣每次開機都會運行一下這個命令。插拔過網卡后也注意要運行下這三條命令。

    四、特別提醒

    1、每次重啟或者插拔網卡后,采用自動獲取ip方式的,都會生成一條0.0.0.0的默認路由,而這一條路由適用于所有目標網絡,所以一般公司配置雙網卡采用第二種方式,外網自動獲取,內網固定ip形式,這樣在重啟后,不用重新設置路由,如果在活動路由中存在兩條0.0.0.0的路由,則需要把0.0.0.0的路由刪除掉,在重新對外網自動獲取,否則目標地址無法準確路由,外網無法訪問

    2、網絡目標可以為一個目標ip(例如10.2.2.100),也可以為一個目標網段(例如10.2.2.0),注意:網絡目標為0.0.0.0時,所有沒有路由的目標ip全部會走此路由

    3、如果內網需要訪問多個網絡目標,則在添加多條目標路由

    4、路由匹配原則,采用最大匹配度方式,比如存在網絡地址10.2.2.100下一跳為10.2.2.1和網絡地址10.2.2.0下一跳為10.2.3.1兩條網絡路由,如果訪問目標網絡地址為10.2.2.100,那么選用的路由為10.2.2.100,下一跳為10.2.2.1的路由

網站首頁   |    關于我們   |    公司新聞   |    產品方案   |    用戶案例   |    售后服務   |    合作伙伴   |    人才招聘   |   

友情鏈接: 餐飲加盟

地址:北京市海淀區    電話:010-     郵箱:@126.com

備案號:冀ICP備2024067069號-3 北京科技有限公司版權所有