一、Nginx簡介
Nginx是一個web伺服器也可以用來做負載均衡及反向代理使用,目前使用最多的就是負載均衡,具體簡介我就不介紹了百度一下有很多,下面直接進入安裝步驟。安裝Nginx是在
雲伺服器 Linux作業系統環境上操作的,因為在Linux作業系統上進行web應用開發是最常見的。也是企業用的最多的。這裡我選的是 阿裡雲。
二、Nginx安裝
1、下載下傳Nginx及相關元件
Linux系統是Centos 6.5 64位,我直接切換到root使用者下安裝
![](https://img.laitimes.com/img/9ZDMuAjOiMmIsIjOiQnIsIyZuBnL3gzN4AjM5MTOtITN4QDN3ITNxgTM0AzNxAjMtkDO4IzNx8CX0AzNxAjMvwVO4gjM3EzLcd2bsJ2Lc12bj5ycn9Gbi52YuUTMwIzcldWYtl2Lc9CX6MHc0RHaiojIsJye.png)
[root@localhost src]# wget http://nginx.org/download/nginx-1.10.2.tar.gz
省略安裝内容...
[root@localhost src]# wget http://www.openssl.org/source/openssl-fips-2.0.10.tar.gz
省略安裝内容...
[root@localhost src]# wget http://zlib.net/zlib-1.2.11.tar.gz
省略安裝内容...
[root@localhost src]# wget ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/pcre-8.40.tar.gz
省略安裝内容...
安裝c++編譯環境,如已安裝可略過
[root@localhost src]# yum install gcc-c++
省略安裝内容...
期間會有确認提示輸入y回車
Is this ok [y/N]:y
省略安裝内容...
2、安裝Nginx及相關元件
openssl安裝
[root@localhost src]# tar zxvf openssl-fips-2.0.10.tar.gz
省略安裝内容...
[root@localhost src]# cd openssl-fips-2.0.10
[root@localhost openssl-fips-2.0.10]# ./config && make && make install
省略安裝内容...
pcre安裝
[root@localhost src]# tar zxvf pcre-8.40.tar.gz
省略安裝内容...
[root@localhost src]# cd pcre-8.40
[root@localhost pcre-8.40]# ./configure && make && make install
省略安裝内容...
zlib安裝
[root@localhost src]# tar zxvf zlib-1.2.11.tar.gz
省略安裝内容...
[root@localhost src]# cd zlib-1.2.11
[root@localhost zlib-1.2.11]# ./configure && make && make install
省略安裝内容...
nginx安裝
[root@localhost src]# tar zxvf nginx-1.10.2.tar.gz
省略安裝内容...
[root@localhost src]# cd nginx-1.10.2
[root@localhost nginx-1.10.2]# ./configure && make && make install
省略安裝内容...
3、啟動Nginx
先找一下nginx安裝到什麼位置上了
進入nginx目錄并啟動
報錯了,error while loading shared libraries: libpcre.so.1: cannot open shared object file: No such file or directory,按照下面方式解決
1.用whereis libpcre.so.1指令找到libpcre.so.1在哪裡
2.用ln -s /usr/local/lib/libpcre.so.1 /lib64指令做個軟連接配接就可以了
3.用sbin/nginx啟動Nginx
4.用ps -aux | grep nginx檢視狀态
[root@localhost nginx]# whereis libpcre.so.1
[root@localhost nginx]# ln -s /usr/local/lib/libpcre.so.1 /lib64
[root@localhost nginx]# sbin/nginx
[root@localhost nginx]# ps -aux | grep nginx
進入Linux系統的圖形界面,打開浏覽器輸入localhost會看到下圖,說明nginx啟動成功
nginx的基本操作
啟動
[root@localhost ~]# /usr/local/nginx/sbin/nginx
停止/重新開機
[root@localhost ~]# /usr/local/nginx/sbin/nginx -s stop(quit、reload)
指令幫助
[root@localhost ~]# /usr/local/nginx/sbin/nginx -h
驗證配置檔案
[root@localhost ~]# /usr/local/nginx/sbin/nginx -t
配置檔案
[root@localhost ~]# vim /usr/local/nginx/conf/nginx.conf
4、簡單配置Nginx
打開nginx配置檔案位于nginx目錄下的conf檔案夾下
簡單介紹一下vim的文法
預設vim打開後是不能錄入的,需要按鍵才能操作,具體如下:
開啟編輯:按“i”或者“Insert”鍵
退出編輯:“Esc”鍵
退出vim:“:q”
儲存vim:“:w”
儲存退出vim:“:wq”
不儲存退出vim:“:q!”
"#"代表注釋,最重要的是server{}塊這部分就代表每一個web站點,詳細的配置介紹可以查閱我的另一片配置文章,此處我們先暫時設定三個站點
分别使用不同的端口80、81、82儲存退出并且重新開機nginx
5、開啟外網通路
在Linux系統中預設有防火牆Iptables管理者所有的端口,隻啟用預設遠端連接配接22端口其他都關閉,咱們上面設定的80等等也是關閉的,是以我們需要先把應用的端口開啟
方法一直接關閉防火牆,這樣性能較好,但安全性較差,如果有前置防火牆可以采取這種方式
關閉防火牆
[root@localhost ~]# service iptables stop
關閉開機自啟動防火牆
[root@localhost ~]# chkconfig iptables off
[root@localhost ~]# chkconfig --list|grep ipt
下面是防火牆的其他操作指令
方法二将開啟的端口加入防火牆白名單中,這種方式較安全但性能也相對較差
編輯防火牆白名單
[root@localhost ~]# vim /etc/sysconfig/iptables
增加下面一行代碼
-A INPUT -p tcp -m state -- state NEW -m tcp --dport 80 -j ACCEPT
儲存退出,重新開機防火牆
[root@localhost ~]# service iptables restart
Linux配置完畢了,使用另一台電腦而非安裝nginx的電腦,我是用的windows系統,配置一下host在“C:WindowsSystem32driversetc”下的hosts中配置一下域名重定向
10.11.13.22 nginx.test.com nginx.test1.com nginx.test2.com
然後cmd再ping一下這個域名是否正确指向了這個IP上
正确指向後在telnet一下80端口看一下是否可以與端口通信(如果telnet提示沒有此指令是沒有安裝用戶端,在啟用或禁用windows功能處安裝後再操作即可)
得到以下界面及代表通信成功
打開這台Windows系統内的浏覽器,輸入nginx.test.com會得到以下結果,就說明外網通路成功
如果防火牆你依然啟用,隻是設定了啟用端口,那我們通路81那個端口會發現無法通路,因為我并沒有加入白名單
到此Nginx伺服器雛形部署完成。
6、Nginx負載均衡配置
Nginx集反向代理和負載均衡于一身,在配置檔案中修改配就可以實作
首先我們打開配置檔案
[root@localhost nginx]# vim conf/nginx.conf
每一個server就是一個虛拟主機,我們有一個當作web伺服器來使用
listen 80;代表監聽80端口
server_name xxx.com;代表外網通路的域名
location / {};代表一個過濾器,/比對所有請求,我們還可以根據自己的情況定義不同的過濾,比如對靜态檔案js、css、image制定專屬過濾
root html;代表站點根目錄
index index.html;代表預設首頁
這樣配置完畢我們輸入域名就可以通路到該站點了。
負載均衡功能往往在接收到某個請求後配置設定到後端的多台伺服器上,那我們就需要upstream{}塊來配合使用
upstream xxx{};upstream子產品是命名一個後端伺服器組,組名必須為後端伺服器站點域名,内部可以寫多台伺服器ip和port,還可以設定跳轉規則及權重等等
ip_hash;代表使用ip位址方式配置設定跳轉後端伺服器,同一ip請求每次都會通路同一台後端伺服器
server;代表後端伺服器位址
server{};server子產品依然是接收外部請求的部分
server_name;代表外網通路域名
location / {};同樣代表過濾器,用于制定不同請求的不同操作
proxy_pass;代表後端伺服器組名,此組名必須為後端伺服器站點域名
server_name和upstream{}的組名可以不一緻,server_name是外網通路接收請求的域名,upstream{}的組名是跳轉後端伺服器時站點通路的域名
配置一下Windows的host将我們要通路的域名aaa.test.com指向Linux
因為硬體有限,我是将Windows中的IIS作為Nginx的後端伺服器,是以配置一下IIS的站點域名
打開cmd再ping一下aaa.test.com确實指向Linux系統了,再打開浏覽器輸入aaa.test.com會顯示bbb這個站點就代表負載成功了。
Nginx的負載功能就配置完成了,這隻是簡單設定了一下,生産環境中還有很多詳細的調整,後續再逐漸增加,本人水準有限,如有不對之處還望指導謝謝。