亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Nginx中怎么設置負載均衡和反向代理

發布時間:2021-06-21 16:52:27 來源:億速云 閱讀:141 作者:Leah 欄目:大數據

Nginx中怎么設置負載均衡和反向代理,針對這個問題,這篇文章詳細介紹了相對應的分析和解答,希望可以幫助更多想解決這個問題的小伙伴找到更簡單易行的方法。

什么是負載均衡?

概念

負載均衡是高可用網絡基礎架構的關鍵組件,通常用于將工作負載分布到多個服務器來提高網站、應用、數據庫或其他服務的性能和可靠性。

常用的負載均衡算法

負載均衡算法決定了后端的哪些健康服務器會被選中。幾個常用的算法:

  1. Round Robin(輪詢):為第一個請求選擇列表中的第一個服務器,然后按順序向下移動列表直到結尾,然后循環。

  2. Least Connections(最小連接):優先選擇連接數最少的服務器,在普遍會話較長的情況下推薦使用。

  3. Source:根據請求源的 IP 的散列(hash)來選擇要轉發的服務器。這種方式可以一定程度上保證特定用戶能連接到相同的服務器。如果你的應用需要處理狀態而要求用戶能連接到和之前相同的服務器。可以通過 Source 算法基于客戶端的 IP 信息創建關聯,或者使用粘性會話(sticky sessions)。

Nginx提供的負載均衡策略有2種:內置策略和擴展策略。 內置策略為輪詢,加權輪詢,Ip hash。 擴展策略,就天馬行空,只有你想不到的沒有他做不到的啦,你可以參照所有的負載均衡算法,給他一一找出來做下實現。 擴展策略舉例: fair,根據服務器的響應時間來分配請求,響應時間短的優先分配,即負載壓力小的優先會分配。 fair源碼

參見:什么是負載均衡? Nginx負載均衡配置

什么是反向代理?

正向代理

正向代理是一個位于客戶端和目標服務器之間的代理服務器(中間服務器)。 為了從原始服務器取得內容,客戶端向代理服務器發送一個請求,并且指定目標服務器,之后代理向目標服務器轉交并且將獲得的內容返回給客戶端。 正向代理的情況下客戶端必須要進行一些特別的設置才能使用。

反向代理

反向代理正好相反。對于客戶端來說,反向代理就好像目標服務器。并且客戶端不需要進行任何設置。 客戶端向反向代理發送請求,接著反向代理判斷請求走向何處,并將請求轉交給客戶端,使得這些內容就好似他自己一樣, 一次客戶端并不會感知到反向代理后面的服務,也因此不需要客戶端做任何設置,只需要把反向代理服務器當成真正的服務器就好了。

參照:正向代理與反向代理的區別

nginx 安裝

通過yum 源安裝

配置yum源

  1. 首先修改公司的yum源配置, cd /etc/yum.repos.d/ ,修改CentOS-7.6-Base.repo 。

  2. 除此之外,在安裝epel 源。(extra package for enterprise linux, 為“紅帽系”的操作系統提供額外的軟件包,適用于RHEL、CentOS等, 里面有1萬多個軟件,強烈建議安裝) yum install epel-release 如果epel無法安裝,請參見:yum安裝epel源

  3. 添加Nginx倉庫 vim /etc/yum.repos.d/nginx.repo 輸入下面內容 [nginx] name=nginx repo baseurl=http://nginx.org/packages/centos/7/$basearch/ gpgcheck=0 enabled=1

  4. 安裝:yum install nginx 。 使用 yum 安裝是在線安裝,但是版本可能不是最新,如果需要最新版本的話,還是需要源碼安裝。

  5. 啟動Nginx systemctl start nginx 或者 進入/usr/sbin,執行 ./nginx 或者執行 service nginx start

  6. 測試頁面 http://127.0.0.1/ 如果頁面沒有出來,查看防火墻配置 vi /etc/sysconfig/iptables   添加下面內容 -A INPUT -m state –state NEW -m tcp -p tcp –dport 80 -j ACCEPT(允許80端口通過防火墻)  -A INPUT -m state –state NEW -m tcp -p tcp –dport 3306 -j ACCEPT(mysql端口  允許3306端口通過防火墻) 然后重啟防火墻:service iptables restart

  7. 把Nginx加到系統啟動項,這樣每次開機的時候就自動啟動了,使用下面的命令: systemctl enable nginx

參照:Linux(Centos7)yum安裝Nginx

通過源碼安裝

1. 安裝前工作首先更新系統軟件源,使用以下命令更新系統: yum update

有關兩個命令的一點解釋:

  1. yum -y update - 升級所有包,改變軟件設置和系統設置,系統版本內核都升級。

  2. yum -y upgrade - 升級所有包,不改變軟件設置和系統設置,系統版本升級,內核不改變。

2. 依賴包安裝

[root@localhost src]# yum -y install gcc gcc-c++ autoconf automake libtool make cmake [root@localhost src]# yum -y install zlib zlib-devel openssl openssl-devel pcre-devel

3. 下載Nginx安裝源文件

http://nginx.org/en/download.html nginx-1.10.2.tar.gz

4. 新建nginx用戶及用戶組

用 root 用戶身份登錄系統,執行以下命令創建新的用戶。

[root@localhost src]# groupadd nginx
[root@localhost src]# useradd -g nginx -M nginx
  1. useradd命令的-M參數用于不為nginx建立home目錄

  1. 修改/etc/passwd,使得nginx用戶無法bash登陸(nginx用戶后面由/bin/bash改為/sbin/nologin)

  2. vi /etc/passwd然后找到有 nginx 那一行,把它修改為(后面由/bin/bash改為/sbin/nologin): 例如:nginx..1002:1003::/home/nginx:/sbin/nologin

5. 配置、編譯、安裝

下面我們進入解壓的nginx源碼目錄:/usr/local/src/ 執行以下命令

[root@localhost ~]# cd /usr/local/src/nginx*
[root@localhost nginx-1.10.3]# pwd
/usr/local/src/nginx-1.10.3
[root@localhost nginx-1.10.3]#
[root@localhost nginx-1.10.3]# ./configure --prefix=/usr/local/nginx \
--pid-path=/usr/local/nginx/run/nginx.pid \
--with-http_ssl_module \
--user=nginx \
 --group=nginx \
--with-pcre \
--without-mail_pop3_module \
--without-mail_imap_module \
--without-mail_smtp_module

--prefix=/usr/local/nginx 指定安裝到 /usr/local/nginx 目錄下。
上面配置完成后,接下來執行編譯 

[root@localhost nginx-1.10.3]# make
[root@localhost nginx-1.10.3]# make install

查看安裝后的程序版本:
[root@localhost nginx-1.10.3]# /usr/local/nginx/sbin/nginx -v
nginx version: nginx/1.10.3

注意:上面的反斜杠\ 表示換行繼續。

6. 啟動、停止

nginx 管理的幾種方式:

6.1 啟動Nginx

/usr/local/nginx/sbin/nginx

6.2 從容停止Nginx:

kill -QUIT 主進程號 # 如上一步中的 ps 命令輸出的 29151,就是 Nginx的主進程號

6.3 快速停止Nginx:

kill -TERM 主進程號

6.4 強制停止Nginx:

pkill -9 nginx

6.5 平滑重啟nginx

/usr/nginx/sbin/nginx -s reload

參照:Nginx安裝

兩者安裝的不同

  1. yum 安裝是在線安裝,好處是:安裝方式簡單,不易出錯; 源碼包 安裝是先將 nginx 的源碼下載下來,在自己的系統里編譯生成可執行文件,然后執行, 好處是:因為是在自己的系統上編譯的,更符合自己系統的性能,也就是說在自己的系統上執行 nginx 服務性能效率更好。

  2. 安裝路徑不同 通過源碼包編譯安裝的軟件,通常都放在 /usr/local/包名 路徑下。 通過源碼安裝,可以自己指定安裝路徑。

  3. 啟動方式不同 yum 安裝 nginx,我們可以通過 系統服務命令 service 來啟動或停止 service nginx start #啟動 nginx 服務 service nginx stop #停止 nginx 服務 service nginx restart #重啟 nginx 服務 源碼包 安裝 nginx 啟動的時候不能使用 service 來啟動,需要執行 nginx 安裝目錄下的 sbin 目錄下的 nginx 可執行程序才行, 如下(我的 nginx 安裝在 /usr/local/webserver/ 目錄下) ? ~ /usr/local/webserver/nginx/sbin/nginx #啟動 nginx 服務 ? ~ /usr/local/webserver/nginx/sbin/nginx -s stop #停止 nginx 服務

參照:nginx服務器詳細安裝過程(使用yum 和 源碼包兩種安裝方式,并說明其區別)

nginx 配置解析

nginx 配置結構

...              #全局塊

events {         #events塊
   ...
}

http      #http塊
{
    ...   #http全局塊
    server        #server塊
    { 
        ...       #server全局塊
        location [PATTERN]   #location塊
        {
            ...
        }
        location [PATTERN] 
        {
            ...
        }
    }
    server
    {
      ...
    }
    ...     #http全局塊
}

nginx 配置詳解

########### 每個指令必須有分號結束。#################
#user administrator administrators;  #配置用戶或者組,默認為nobody nobody。
#worker_processes 2;  #允許生成的進程數,默認為1
#pid /nginx/pid/nginx.pid;   #指定nginx進程運行文件存放地址
error_log log/error.log debug;  #制定日志路徑,級別。這個設置可以放入全局塊,http塊,server塊,級別以此為:debug|info|notice|warn|error|crit|alert|emerg
events {
    accept_mutex on;   #設置網路連接序列化,防止驚群現象發生,默認為on
    multi_accept on;  #設置一個進程是否同時接受多個網絡連接,默認為off
    #use epoll;      #事件驅動模型,select|poll|kqueue|epoll|resig|/dev/poll|eventport
    worker_connections  1024;    #最大連接數,默認為512
}
http {
    include       mime.types;   #文件擴展名與文件類型映射表
    default_type  application/octet-stream; #默認文件類型,默認為text/plain
    #access_log off; #取消服務日志    
    log_format myFormat '$remote_addr–$remote_user [$time_local] $request $status $body_bytes_sent $http_referer $http_user_agent $http_x_forwarded_for'; #自定義格式
    access_log log/access.log myFormat;  #combined為日志格式的默認值
    sendfile on;   #允許sendfile方式傳輸文件,默認為off,可以在http塊,server塊,location塊。
    sendfile_max_chunk 100k;  #每個進程每次調用傳輸數量不能大于設定的值,默認為0,即不設上限。
    keepalive_timeout 65;  #連接超時時間,默認為75s,可以在http,server,location塊。

    upstream mysvr {   
      server 127.0.0.1:7878;
      server 192.168.10.121:3333 backup;  #熱備
    }
    error_page 404 https://www.baidu.com; #錯誤頁
    server {
        keepalive_requests 120; #單連接請求上限次數。
        listen       4545;   #監聽端口
        server_name  127.0.0.1;   #監聽地址       
        location  ~*^.+$ {       #請求的url過濾,正則匹配,~為區分大小寫,~*為不區分大小寫。
           #root path;  #根目錄
           #index vv.txt;  #設置默認頁
           proxy_pass  http://mysvr;  #請求轉向mysvr 定義的服務器列表
           deny 127.0.0.1;  #拒絕的ip
           allow 172.18.5.54; #允許的ip           
        } 
    }
}

幾個常見配置項:

  1. $remote_addr 與 $http_x_forwarded_for 用以記錄客戶端的ip地址;

  2. $remote_user :用來記錄客戶端用戶名稱;

  3. $time_local : 用來記錄訪問時間與時區;

  4. $request : 用來記錄請求的url與http協議;

  5. $status : 用來記錄請求狀態;成功是200;

  6. $body_bytes_s ent :記錄發送給客戶端文件主體內容大小;

  7. $http_referer :用來記錄從那個頁面鏈接訪問過來的;

  8. $http_user_agent :記錄客戶端瀏覽器的相關信息;

其他說明

  1. 驚群現象:一個網路連接到來,多個睡眠的進程被同時叫醒,但只有一個進程能獲得鏈接,這樣會影響系統性能。

  2. 每個指令必須有分號結束。


參見:

Nginx反向代理以及負載均衡配置 【nginx】配置Nginx實現負載均衡 Nginx 配置詳解


關于Nginx中怎么設置負載均衡和反向代理問題的解答就分享到這里了,希望以上內容可以對大家有一定的幫助,如果你還有很多疑惑沒有解開,可以關注億速云行業資訊頻道了解更多相關知識。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

明溪县| 聂拉木县| 伊通| 华阴市| 久治县| 通海县| 独山县| 师宗县| 光泽县| 镇宁| 东城区| 尉犁县| 大悟县| 汪清县| 同仁县| 南汇区| 镇坪县| 蛟河市| 太和县| 泸西县| 城步| 吉木乃县| 曲周县| 无棣县| 武汉市| 荥阳市| 仪征市| 温泉县| 康平县| 天台县| 临汾市| 志丹县| 沙坪坝区| 平湖市| 葫芦岛市| 娱乐| 永济市| 大悟县| 青龙| 南阳市| 武隆县|