nginx反向代理 和部分優化


准備環境  :

               兩台web服務     安裝http  寫入文檔  並啟動

yum -y install httpd

echo "192.168.2.100" > /var/www/html/index.html

  systemctl restart httpd          

安裝nginx

1.  配置Nginx服務器,添加服務器池,實現反向代理功能

修改/usr/local/nginx/conf/nginx.conf配置文件

http {

.. ..

#使用upstream定義后端服務器集群,集群名稱任意(如webserver)

#使用server定義集群中的具體服務器和端口

upstream webserver {

server 192.168.2.100:80;

server 192.168.2.200:80;

}

.. ..

server {

listen        80;

server_name localhost;

location / {

#通過proxy_pass將用戶的請求轉發給webserver集群

proxy_pass http://webserver;

}

}

/usr/local/nginx/sbin/nginx -s reload                     重新加載配置

curl http://192.168.4.5                                     //使用該命令多次訪問查看效果
2.配置upstream服務器集群的調度算法

upstream webserver {

#通過ip_hash設置調度規則為:相同客戶端訪問相同服務器

                 ip_hash;

server 192.168.2.100 weight=1 max_fails=2 fail_timeout=10;

server 192.168.2.200 weight=2 max_fails=2 fail_timeout=10;

server 192.168.2.101 down;

}

  1. #weight設置服務器權重值,默認值為1
  2. #max_fails設置最大失敗次數,測試服務器幾次才確認服務器失敗
  3. #fail_timeout設置失敗超時時間,單位為秒
  4. #down標記服務器已關機,不參與集群調度

(可根據需求更改集群池屬性)

3.Nginx的TCP/UDP調度器

部署支持4層TCP/UDP代理的Nginx服務器

yum -y install gcc pcre-devel openssl-devel        //安裝依賴包

wget   http://nginx.org/download/nginx-1.12.2.tar.gz     (也可配置阿里源用yum安裝)

tar -xf nginx-1.12.2.tar.gz

cd nginx-1.12.2

./configure   --with-http_ssl_module   --with-stream     

                    //開啟SSL加密功能         //開啟4層反向代理功能    

        make && make install     //編譯並安裝

配置Nginx服務器,添加服務器池,實現TCP/UDP反向代理功能

vim /usr/local/nginx/conf/nginx.conf

stream {

        upstream backend {

    server 192.168.2.100:22;            //后端SSH服務器的IP和端口

    server 192.168.2.200:22;

}

         server {

         listen 12345;                    //Nginx監聽的端口

        proxy_pass backend;

}

}

/usr/local/nginx/sbin/nginx -s reload                 重新加載配置

ssh 192.168.4.5 -p 12345            //使用該命令多次訪問查看效果

4.優化404頁面

修改Nginx配置文件,自定義報錯頁面

vim /usr/local/nginx/conf/nginx.conf

charset utf-8; //僅在需要中文時修改該選項

error_page 404 /404.html;    //自定義錯誤頁面

.. ..

 

vim /usr/local/nginx/html/404.html        //生成錯誤頁面

Oops,No NO no page …

/usr/local/nginx/sbin/nginx -s reload                 重新加載配置

firefox http://192.168.4.5/xxxxx        //訪問一個不存在的頁面

優化Nginx並發量

優化前使用ab高並發測試

         ab -n 2000 -c 2000 http://192.168.4.5/ 

Benchmarking 192.168.4.5 (be patient)

socket: Too many open files (24)                //提示打開文件數量過多

vim /usr/local/nginx/conf/nginx.conf
.. ..

worker_processes 2;                    //與CPU核心數量一致

events {

worker_connections 65535;        //每個worker最大並發連接數

}

.. ..

優化Linux內核參數(最大文件數量)

ulimit -a                        //查看所有屬性值

ulimit -Hn 100000                //設置硬限制(臨時規則)

ulimit -Sn 100000                //設置軟限制(臨時規則)

vim /etc/security/limits.conf

 

 

*          soft       nofile        100000

*          hard      nofile        100000

ab -n 2000 -c 2000 http://192.168.4.5/                       優化后測試服務器並發量

優化Nginx數據包頭緩存
優化前,使用腳本測試長頭部請求是否能獲得響應

cat lnmp_soft/buffer.sh

#!/bin/bash

URL=http://192.168.4.5/index.html?

for i in {1..5000}

do

    URL=${URL}v$i=$i

done

curl $URL                                //經過5000次循環后,生成一個長的URL地址欄

[root@proxy ~]# ./buffer.sh

.. ..

<center><h1>414 Request-URI Too Large</h1></center>        //提示頭部信息過大

修改Nginx配置文件,增加數據包頭部緩存大小

vim /usr/local/nginx/conf/nginx.conf

.. ..

http {

client_header_buffer_size 1k;        //默認請求包頭信息的緩存    

large_client_header_buffers 4 4k;        //大請求包頭部信息的緩存個數與容量

.. ..

/usr/local/nginx/sbin/nginx -s reload                 重新加載配置

優化后,使用腳本測試長頭部請求是否能獲得響應

 

5.修改Nginx配置文件,定義對靜態頁面的緩存時間

vim /usr/local/nginx/conf/nginx.conf

server {

listen 80;

server_name localhost;

location / {

root html;

index index.html index.htm;

}

location ~* \.(jpg|jpeg|gif|png|css|js|ico|xml)$ {

expires        30d;            //定義客戶端緩存時間為30天

}

}

 

cp /usr/share/backgrounds/day.jpg /usr/local/nginx/html

/usr/local/nginx/sbin/nginx -s reload                 重新加載配置

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM