1. 程式人生 > >Linux下的Nginx反向代理的安裝配置與使用

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沒有許可權。但是直接通過網址域名來訪問其子目錄是可以的,只不過是不能通過主頁面進入下一級。

此文到此結束,祝工作順利,歡迎大神一起討論