一、nginx安裝
nginx是一款輕量級的web 伺服器/反向代理伺服器及電子郵件(imap/pop3)代理伺服器,並在一個bsd- like 協議下發行。由俄羅斯的程式設計師igor sysoev所開發,供俄國大型的入口網站及搜尋引擎rambler(俄文:рамблер)使用。其特點是佔有內存少,並發能力強,事實上nginx的並發能力確實在同類型的網頁伺服器中表現較好,中國大陸使用nginx網站用戶有:百度、新浪、網易、騰訊等。
最新版本的nginx版本為1.9.3,我這下載的是window版本的,一般實際場景都是安裝在linux系統下的,由於linux系統目前正在摸索中這裡就不介紹。官方下載地址:。下載完成之後解壓縮執行nginx.exe就啟動了nginx了,啟動後會在進程裡面看到nginx。
要實現負載平衡需要修改conf/nginx.conf的設定訊息,修改設定資訊之後重新啟動nginx服務,可以透過nginx -s reload指令實作。這裡我們使用 ants 提供的一個批次來操作。
將nginx.bat檔案放到nginx.exe相同資料夾下,直接執行就行了。文章結尾會提供本文所用到的所有文件。
二、網站建置及設定
#1.搭建兩個iis網站
網站下只有一個簡單的index頁面,用來輸出目前伺服器資訊。由於我沒有兩台機器,所以將兩個站點都部署到本機了,分別綁定了8082和9000兩個連接埠。
protected void page_load(object sender, eventargs e) { label0.text = "请求开始时间:"+datetime.now.tostring("yyyy-mm-dd hh:mm:ss"); label1.text = "服务器名称:" + server.machinename;//服务器名称 label2.text = "服务器ip地址:" + request.servervariables["local_addr"];//服务器ip地址 label3.text = "http访问端口:" + request.servervariables["server_port"];//http访问端口" label4.text = ".net解释引擎版本:" + ".net clr" + environment.version.major + "." + environment.version.minor + "." + environment.version.build + "." + environment.version.revision;//.net解释引擎版本 label5.text = "服务器操作系统版本:" + environment.osversion.tostring();//服务器操作系统版本 label6.text = "服务器iis版本:" + request.servervariables["server_software"];//服务器iis版本 label7.text = "服务器域名:" + request.servervariables["server_name"];//服务器域名 label8.text = "虚拟目录的绝对路径:" + request.servervariables["appl_rhysical_path"];//虚拟目录的绝对路径 label9.text = "执行文件的绝对路径:" + request.servervariables["path_translated"];//执行文件的绝对路径 label10.text = "虚拟目录session总数:" + session.contents.count.tostring();//虚拟目录session总数 label11.text = "虚拟目录application总数:" + application.contents.count.tostring();//虚拟目录application总数 label12.text = "域名主机:" + request.servervariables["http_host"];//域名主机 label13.text = "服务器区域语言:" + request.servervariables["http_accept_language"];//服务器区域语言 label14.text = "用户信息:" + request.servervariables["http_user_agent"]; label14.text = "cpu个数:" + environment.getenvironmentvariable("number_of_processors");//cpu个数 label15.text = "cpu类型:" + environment.getenvironmentvariable("processor_identifier");//cpu类型 label16.text = "请求来源地址:" + request.headers["x-real-ip"]; }
2.修改nginx配置資訊
修改nginx監聽端口,修改http server下的listen節點值,由於本機80端口已經被佔用,我改為監聽8083端口。
listen 8083;
在http節點下新增upstream(伺服器叢集),server設定的是叢集伺服器的訊息,我在這裡搭建了兩個站點,設定了兩個資訊。
#服务器集群名称为jq_one upstream jq_one { server 127.0.0.1:9000; server 127.0.0.1:8082; }
在http節點下找到location節點修改
location / { root html; index index.aspx index.html index.htm; #修改主页为index.aspx #其中jq_one 对应着upstream设置的集群名称 proxy_pass http://jq_one; #设置主机头和客户端真实地址,以便服务器获取客户端真实ip proxy_set_header host $host; proxy_set_header x-real-ip $remote_addr; proxy_set_header x-forwarded-for $proxy_add_x_forwarded_for; }
修改完成設定檔以後記得重新啟動nginx服務,最終完整設定檔資訊如下
##3.執行結果 造訪http://127.0.0.1:8083/index.aspx ,多造訪幾次,專注於標紅部分。四、問題分析
雖然我們搭建了負載平衡站點,但還存在以下問題。 1.如果站點使用了session,請求平均分配到兩個站點,那麼必然存在session共享問題,該如何解決? 使用資料庫保存session資訊使用nginx將相同ip的請求分配到固定伺服器,修改如下。 ip_hash會計算ip對應hash值,然後分配到固定伺服器
upstream jq_one{ server 127.0.0.1:8082 ; server 127.0.0.1:9000 ; ip_hash; }建立一台redis伺服器,對session的讀取都會從該redis伺服器上讀取。後面的文章將介紹分散式快取redis的使用
2.管理員更新網站文件,該怎麼操作,現在還只有兩台伺服器,可以手動將文件更新到兩台伺服器,如果是10台呢,那麼手動操作必然是不可行的
3.網站中的檔案上傳功能會將檔案指派到不同的伺服器,檔案共用問題如何解決。
4.負載的伺服器設定不一樣,有的高有的低可不可以讓配置高的伺服器處理請求多一些
upstream jq_one{ server 127.0.0.1:8082 weight=4; server 127.0.0.1:9000 weight=1; }
通过weight设置每台服务器分配请求站的权重,值越高分配的越多。
5.由于请求是经过nginx转发过来的,可以在代码里面获取到用户请求的实际ip地址吗?
答案是肯定的,在localtion节点设置如下请求头信息
#设置主机头和客户端真实地址,以便服务器获取客户端真实ip proxy_set_header host $host; proxy_set_header x-real-ip $remote_addr; proxy_set_header x-forwarded-for $proxy_add_x_forwarded_for;
代码里面通过request.headers["x-real-ip"],就能获取到真实ip
6.nginx实现静态文件(image,js,css)缓存
在server节点下添加新的localtion
#静态资源缓存设置 location ~ \.(jpg|png|jpeg|bmp|gif|swf|css)$ { expires 30d; root /nginx-1.9.3/html;#root: #静态文件存在地址,这里设置在/nginx-1.9.3/html下 break; }
这是index页面的代码

以上是nginx+iis如何實現簡單的負載平衡的詳細內容。更多資訊請關注PHP中文網其他相關文章!

NGINX通過其事件驅動架構和異步處理能力提升性能,通過模塊化設計和靈活配置增強可擴展性,並通過SSL/TLS加密和請求速率限制等措施提高安全性。

NGINX适合高并发和低资源消耗场景,Apache适用于需要复杂配置和功能扩展的场景。1.NGINX以高性能处理大量并发连接著称。2.Apache以稳定性和丰富模块支持见长。选择时需根据具体需求决定。

NGINXisessentialformodernwebapplicationsduetoitsrolesasareverseproxy,loadbalancer,andwebserver,offeringhighperformanceandscalability.1)Itactsasareverseproxy,enhancingsecurityandperformancebycachingandloadbalancing.2)NGINXsupportsvariousloadbalancingm

通過Nginx配置SSL/TLS來確保網站安全,需要以下步驟:1.創建基本配置,指定SSL證書和私鑰;2.優化配置,啟用HTTP/2和OCSPStapling;3.調試常見錯誤,如證書路徑和加密套件問題;4.應用性能優化建議,如使用Let'sEncrypt和會話復用。

Nginx是高性能的HTTP和反向代理服務器,擅長處理高並發連接。 1)基本配置:監聽端口並提供靜態文件服務。 2)高級配置:實現反向代理和負載均衡。 3)調試技巧:檢查錯誤日誌和測試配置文件。 4)性能優化:啟用Gzip壓縮和調整緩存策略。

Nginx缓存可以通过以下步骤显著提升网站性能:1)定义缓存区和设置缓存路径;2)配置缓存有效期;3)根据不同内容设置不同的缓存策略;4)优化缓存存储和负载均衡;5)监控和调试缓存效果。通过这些方法,Nginx缓存能减少后端服务器压力,提升响应速度和用户体验。

使用DockerCompose可以簡化Nginx的部署和管理,通過DockerSwarm或Kubernetes進行擴展是常見的做法。 1)使用DockerCompose定義和運行Nginx容器,2)通過DockerSwarm或Kubernetes實現集群管理和自動擴展。

Nginx的高級配置可以通過服務器塊和反向代理實現:1.服務器塊允許在一個實例中運行多個網站,每個塊獨立配置。 2.反向代理將請求轉發到後端服務器,實現負載均衡和緩存加速。


熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

MinGW - Minimalist GNU for Windows
這個專案正在遷移到osdn.net/projects/mingw的過程中,你可以繼續在那裡關注我們。 MinGW:GNU編譯器集合(GCC)的本機Windows移植版本,可自由分發的導入函式庫和用於建置本機Windows應用程式的頭檔;包括對MSVC執行時間的擴展,以支援C99功能。 MinGW的所有軟體都可以在64位元Windows平台上運作。

MantisBT
Mantis是一個易於部署的基於Web的缺陷追蹤工具,用於幫助產品缺陷追蹤。它需要PHP、MySQL和一個Web伺服器。請查看我們的演示和託管服務。

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用