最近在學習nginx的反向代理和負載均衡的運用時,覺得挺簡單的,但是還是想寫一篇博客用於記錄自己的學習過程。
好的,我們進入正題
Nginx(engine x) 是一個高性能的HTTP和反向代理服務器,也是一個IMAP/POP3/SMTP服務器。
其將源代碼以類BSD許可證的形式發布,因它的穩定性、豐富的功能集、示例配置文件和低系統資源的消耗而聞名。
引入眼簾就是各種的專業名詞,雖然我並不太了解這些專業名詞說包含的意義和具體使用,但就我目前而言,只要能學會使用Nginx實現反向代理技術,就已經足夠了。
Nginx是一個特別輕量級的反向代理服務器,整個軟件包3M多一點,卻可以支撐起高達 50,000 個並發連接數的響應,感謝Nginx為我們選擇了 epoll and kqueue作為開發模型。
Nginx作為負載均衡服務器:Nginx 既可以在內部直接支持 Rails 和 PHP 程序對外進行服務,也可以支持作為 HTTP代理服務器對外進行服務。Nginx采用C進行編寫,
不論是系統資源開銷還是CPU使用效率都比 Perlbal 要好很多。處理靜態文件,索引文件以及自動索引;打開文件描述符緩沖。無緩存的反向代理加速,簡單的負載均衡和容錯。
FastCGI,簡單的負載均衡和容錯。
接下來,讓我們來簡單了解一下Nginx的簡單用法:
首先我們需要下載一個Nginx的軟件包,這里我使用的是nginx-1.9.0版本的軟件包,解壓出來以后,是這個樣子的:
conf:配置文件所在的文件夾(存放着Nginx的一堆配置文件)
html:Nginx的自帶首頁文件夾(存放着Nginx的index.html和50x.html)
logs:Nginx的日子文件夾(在啟動失敗的時候會生成error.log,啟動成功以后會生成一個存放着Nginx啟動時獲得的pid的PID文件)
目前主要用到的文件夾基本就這么幾個。
這里說一下我的需求:
我有一個測試項目,里面有用到文件上傳組件,文件上傳以后存放在本地的F:盤下,我想通過訪問一個類似域名的形式,請求到文件,具體需求就是這樣。
首先:文件在上傳到本地時的路徑是:F:\demo\demo-upload\年\月\日\時\
存入到數據庫中的部分為:年\月\日\時\*****文件名
虛擬地址為:image.demo.com
接下來我們來實現這個小功能:
1.首先,我們需要配置Nginx的conf目錄下的nginx.conf
讓我們先來看看nginx.conf文件長啥樣
主要的配置需要在http這對大括號中來編寫
我們在http大括號中寫入上面的配置
server表示服務的意思,listen代表監聽的端口,location表示需要轉向的參數 root表示本地文件系統
編寫了上面的配置之后,我們的需求已經快完成了。
接下來,我們還需要修改hosts文件中的hosts域名
hosts文件存放在WINDOWS文件系統的:C:\Windows\System32\drivers\etc 目錄下
我們在hosts文件中加入我們的虛擬路徑,指向本地IP
127.0.0.1 image.demo.com 然后把文件保存
接下來我們就可以開始啟動Nginx了
首先 我們進入到Nginx的根目錄,也就是能看到Nginx.exe那一層文件夾
然后雙擊運行.exe文件
我們也可以使用cmd命令行來啟動Nginx 我們需要切換到Nginx的根目錄下,然后輸入指令:start nginx 然后回車
如何驗證Nginx是否成功啟動?
我們打開瀏覽器,地址欄輸入:http://localhost:80 如果出現以下頁面,就代表你的Nginx已經成功啟動了
如果顯示的是其他的內容,說明啟動可能出錯了,那我們就需要找啟動失敗的原因了,我們切換到Nginx根目錄下的logs文件夾中
有一個error.log文件,打開它 出現如下錯誤信息:
2019/04/26 09:59:03 [emerg] 16136#10460: bind() to 0.0.0.0:80 failed (10013: An attempt was made to access a socket in a way forbidden by its access permissions)
該錯誤信息描述的是:80端口被占用了
這個時候 我們就需要去看一下 是哪個應用在占用我的80端口
打開cmd輸入:netstat -ano 可以看到被監聽端口的使用信息:
我這里是被 ssl(internet infomation services) 把80端口占用了,我們去找一下這個服務,去把它安排一下。
此電腦>右鍵屬性>控制面板主頁>程序>啟用或關閉windows功能 >找到ssl 把前面的框取消勾選
好的 我們再來試一下
進入命令行,切換到Nginx的根目錄下 輸入 start nginx 回車 窗口一閃而過,好的 驗證一下
瀏覽器地址欄輸入:http://localhost:80,啟動成功了
然后我在瀏覽器中輸入我的虛擬路徑:http://image.demo.com/****/**/**/**/*******.jpg
成功出現了我上傳的圖片,到此,簡單的反向代理已經實現了。
這是我的第一篇博客,記錄的是很簡單的一個Nginx反向代理的初級應用技術,在不久的下一篇中,我會記錄我學習Nginx實現負載均衡的初級應用。
學習是一個慢慢 積累、沉淀 的過程