Linux環境下安裝 Nginx 及使用其配置反向代理、負載均衡

RT

Linux 版本: CentOS-6.4-x86_64

一 安裝

對於Centos版本的Linux環境下,yum源未提供nginx的安裝,可通過切換yum源的方法獲取安裝,也可通過直接下載安裝包的方法,以下命令均需root權限執行:
首先安裝必要的庫(nginx中gzip模塊需要zlib庫,rewrite模塊需要pcre庫,ssl功能需要openssl庫)。選定/usr/local爲安裝目錄,以下具體版本號根據實際改變。

1. 安裝 openssl 庫

本人之前在安裝 Mysql 時安裝過。若沒安裝,下載 openssl-1.0.1e-57.el6.x86_64.rpmopenssl庫下載),安裝過程見 Linux下mysql的安裝過程 中。

2.安裝 pcre 庫

我們可以使用rpm 命令 rpm -qa pcre 進行查詢是否已安裝pcre
若未安裝,或版本不匹配(本人使用pcre-8.36的版本),兩種安裝方式: 如下:
方式一(手動安裝):
下載 pcre-8.36.tar.gz
解壓 tar -zxvf pcre-8.36.tar.gz 到目錄 /usr/pcre-8.36/(先創建pcre-8.36目錄)
cd pcre-8.36
依次執行命令 ./configuremakemake install

方式二:(依次執行以下命令)

cd /usr/pcre/(先創建pcre目錄)
wget ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/pcre-8.36.tar.gz
tar -zxvf pcre-8.36.tar.gz
cd pcre-8.36
./configure
make
make install

報錯及解決方案:
(1)若報錯缺少 libpcre.so.0 ,需下載 pcre-7.8-7.el6.x86_64.rpm 安裝。
複製到路徑後,執行命令:rpm -ivh pcre-7.8-7.el6.x86_64.rpm

(2)若在執行命令 ./configure 報錯
configure: error: You need a C++ compiler for C++ support.
解決辦法 yum install -y gcc -c++

3. 安裝zlib庫

    cd /usr/zlib/(先創建zlib目錄) 
	wget http://zlib.net/zlib-1.2.8.tar.gz
	tar -zxvf zlib-1.2.8.tar.gz
	cd zlib-1.2.8
	./configure
	make
	make install

4.安裝ssl

cd /usr/ssl/(先創建ssl目錄)
	wget http://www.openssl.org/source/openssl-1.0.1j.tar.gz
	tar -zxvf openssl-1.0.1j.tar.gz
	cd openssl-1.0.1j
	./config
	make
	make install

5.安裝Nginx

    cd /usr/nginx(先創建nginx目錄)
	wget http://nginx.org/download/nginx-1.8.0.tar.gz
	tar -zxvf nginx-1.8.0.tar.gz
	cd nginx-1.8.0  
	./configure --prefix=/usr/local/nginx
	make
	make install

啓動 Nginx

/usr/local/nginx/sbin/nginx

報錯:
Nginx啓動提示找不到 libpcre.so.1 解決方法,或提示沒有此命令或目錄
執行命令 [root@z ~]# ln -s /usr/local/lib/libpcre.so.1 /lib64
重新啓動nginx即可


訪問

直接輸入Nginx 服務器ip即可。
無法訪問的解決方案:
在linux上搭建上nginx服務器後,啓動nginx,在windows輸入linux ip訪問失敗,原因就是所有訪問的默認端口都是80,而在linux防火牆沒有配置讓80端口訪問,那麼在windows上就會失敗。
解決方法:
在linux終端輸入: vim /etc/sysconfig/iptables。進入編輯界面,這個時候要想編輯內容,按字母 ‘o’。之後配置即可:
-A INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT
按 ‘ESC’鍵退出編輯模式,按 :wq! 退出並保存。 再使用 /etc/init.d/iptables restart
命令重啓防火牆配置生效即可。


常用命令

啓動:
/usr/local/nginx/sbin/nginx
重啓:
/usr/local/nginx/sbin/nginx -s reload
停止:
/usr/local/nginx/sbin/nginx -s stop
測試配置文件是否正常:
/usr/local/nginx/sbin/nginx -t


反向代理配置

nginx.conf 原配置

location / {
            root   html;
            index  index.html index.htm;
        }

反向代理配置如下

server_name  123.ztest.com;
        location / {
            proxy_pass http://192.168.123.123:8080/ztest_web/;
            index index.html index.htm;
        }

在客戶端(本機windows)host文件中,配置

192.168.123.123 123.ztest.com

訪問 123.ztest.com 即是訪問http://192.168.123.123:8080/ztest_web/index
訪問 123.zlf.com/indexTest 即是訪問 http://192.168.123.123:8080/ztest_web/indexTest


使用 nginx 解決跨域問題

前端ajax訪問請求域名與瀏覽器訪問的域名地址不一致時,存在跨域問題。
跨域問題的解決方案有很多,比如:
jsonp(支持get請求、不支持post請求)
httpclient 進行內部轉發
使用http響應頭允許跨域問題
使用Nginx搭建企業api接口網關
使用Spring ZULL 接口網關

如何使用Nginx搭建接口網關?
Nginx 接口網關攔截所有請求,進行分發。
實現原理:利用域名相同、項目名不同的特徵,由Nginx攔截後,跳轉到真實的地址。
配置:如A、B兩個項目,域名爲 123.ztest.com,在 nginx.cnf 中配置如下:

server {
        listen       80;
	server_name  123.ztest.com;
        location /A {
		proxy_pass  http://a.a.com:81/A;
			index  index.html index.htm;
        }
		location /B{
		proxy_pass  http://b.b.com:81/B;
			index  index.html index.htm;
        }
    }

負載均衡

即增加 upstream backserver 的配置
①輪詢機制:

upstream backserver { 
	server 192.168.123.123:8080; #不能配置具體的項目
	server 192.168.123.124:8080; 
   } 

   server {
        listen       80;
	server_name  123.ztest.com;
        location / {
            proxy_pass http://backserver;
            index index.html index.htm;
        }
    }

②權重機制

upstream backserver { 
	server 192.168.123.123:8080 weight=2; 
	server 192.168.123.124:8080 weight=4; 
    } 

**注意:**權重是個比例關係,上述配置,即訪問123爲1次後,訪問124兩次,依次輪換。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章