WINDOWS下nginx實現本地支援的圖片伺服器反向代理
最近在學習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實現負載均衡的初級應用。
學習是一個慢慢 積累、沉澱 的過程