Linux下的Nginx反向代理的安裝配置與使用
本Nginx的安裝配置所在系統是RedHat系的CentOS,下列步驟都預設在root許可權下
Nginx的簡介:Nginx是一款輕量級Web伺服器、也是一款反向代理伺服器,Nginx可直接支援Rails和PHP的程式、可作為HTTP反向代理伺服器、可作為負載均衡伺服器、作為郵件代理伺服器、幫助實現前端動靜分離。
Nginx特點:高穩定、高效能、資源佔用少、功能豐富、模組化結構、支援熱部署
要安裝Nginx,需要先安裝Nginx的依賴:gcc、pcre、zlib、openssl(如需支援ssl,才需安裝openssl)
1.綜合命令就是:yum -y install gcc zlib zlib-devel pcre-devel openssl openssl-devel
然後等待系統自動安裝完畢
2.下載Nginx的原始碼,選擇自己所需版本,解壓縮安裝,網址:http://www.nginx.org/
3.下載完成之後,通過命令(cd /xxx/xxx)去到所下載的目錄對壓縮包解壓,命令:tar -zxvf nginx-1.10.0.tar.gz
4.通過命令(cd /xxx/xxx)進入nginx的目錄之後,執行命令:./configure(是否需要sudo許可權看具體環境所決定,因本機在root環境所以不需要加sudo)
也可以指定安裝目錄,在上條命令之後增加引數--prefix=/usr/nginx
不指定目錄則預設安裝在/usr/local/nginx(可通過命令whereis nginx查詢)
5.繼續執行命令:make
6.再執行命令:make install
到此為止,nginx的安裝與配置就完成了,接下來啟動nginx驗證一下。
1.通過命令:cd /usr/local/nginx進入nginx的安裝目錄
2.通過命令進入它的子目錄:cd sbin/
3.通過命令:./nginx正式啟動nginx
4.因為nginx預設埠為80,則可以在本地機器瀏覽器上輸入url:127.0.0.1:80(如果不在本機瀏覽器,則輸入nginx服務機器的ip地址)來進行訪問,看到以下頁面則代表成功
啟動成功之後就可以使用Nginx反向代理伺服器來解析域名了。
1.配置nginx.conf
命令如下:
cd /usr/local/nginx(進入nginx安裝目錄)
cd conf(進入conf目錄)
mkdir vhost(建立vhost資料夾)
vim nginx.conf(修改nginx的配置檔案)
在配置檔案中新增該語句:include vhost/*.conf;(不能漏分號) 這語句的意思是把vhost資料夾下的所有.conf檔案載入過來(注意是.conf字尾名的檔案),這麼做的原因是方便以後維護,把每個域名做成一個.conf檔案,通過主配置include進來,這樣以後想維護某個域名,就只需直接對那個對應的.conf進行操作,而不會影響到其它的域名,且檔案不會過於臃腫。這跟Spring的配置檔案類似,Spring配置檔案通過把負責各個模組功能的檔案include進去,從而避免配置檔案過於複雜臃腫。
2.新增一些域名來測試
命令:vim /etc/hosts(編輯hosts檔案)
進入檔案之後,新增以下資訊
具體的ip地址視您本機的情況所定,後面的域名也可以按您需求所修改
2.建立各個.conf檔案
命令:cd vhost(進入vhost資料夾,剛才在上文已經建立了的,裡面沒有內容,現在要新增內容)
命令:vim www.baidu.com.conf(建立該檔案並編輯)
在檔案裡新增以下資訊
server {
listen 80;
autoindex on;
server_name www.baidu.com;
access_log /usr/local/nginx/logs/access.log combined;
index index.html index.htm index.jsp index.php;
#error_page 404 /404.html;
if ( $query_string ~* ".*[\;'\<\>].*" ){
return 404;
}
location / {
proxy_pass http://127.0.0.1:8080;
add_header Access-Control-Allow-Origin *;
}
}
功能是當用戶屬於www.baidu.com域名時,將跳轉到本地的8080埠的程式上,即tomcat
3. :wq儲存檔案退出之後,需要重啟nginx伺服器
命令: ../../sbin/nginx -s reload
3.通過瀏覽器測試
4.上面的例子是通過解析域名,代理到網頁,下面舉個nginx轉發到本地檔案
命令:vim image.baidu.com.conf(建立該檔案並編輯)
在檔案下新增以下資訊
server {
listen 80;
autoindex off;
server_name image.baidu.com;
access_log /usr/local/nginx/logs/access.log combined;
index index.html index.htm index.jsp index.php;
#error_page 404 /404.html;
if ( $query_string ~* ".*[\;'\<\>].*" ){
return 404;
}
location ~ /(mmall_fe|mmall_admin_fe)/dist/view/* {
deny all;
}
location / {
root /ftpfile/;
add_header Access-Control-Allow-Origin *;
}
}
功能是當用戶輸入image.baidu.com的時候,轉發到本地的/ftpfile/檔案,想了解ftp伺服器的可參考本人上一篇博文。
5.然後操作就跟上面一致
:wq儲存檔案退出之後,需要重啟nginx伺服器
命令: ../../sbin/nginx -s reload
6.通過網址訪問:
Nginx的安裝配置以及使用已經介紹完了,下面來講講注意事項:
每個域名的.conf的配置檔案當中都有一個autoindex on或autoindex off的配置,那麼到底是on還是off呢?
autoindex代表自動建立索引,當資源轉移到檔案之後,當是on的時候,則該主檔案頁面下的所有索引都被自動創建出來了,也就是能訪問該檔案下的所有內容了,雖然前端的資源,例如js等原始碼可以被訪問,但是索引能被訪問很容易被窮舉掉。除非有這樣的業務需求(例如下載,maven下載就是如此),否則就把它設為off.當設為off之後,使用者想訪問該
檔案裡的下一級時,瀏覽器會顯示403Forbidden沒有許可權。但是直接通過網址域名來訪問其子目錄是可以的,只不過是不能通過主頁面進入下一級。
此文到此結束,祝工作順利,歡迎大神一起討論