1. 程式人生 > >原始碼編譯安裝Nginx服務

原始碼編譯安裝Nginx服務

準備工作

1:下載原始碼包:nginx-1.14.0.tar.gz
2:解壓原始碼包:
tar zxf nginx-1.14.0.tar.gz
3:cd nginx-1.14.0/src/core
在這裡插入圖片描述
4.vim nginx.h
為了在部署好nginx伺服器後,不讓客戶端訪問的時候知道我們nginx服務的版本,我們對此檔案做以下更改
修改14行為: #define NGINX_VER “nginx”
在這裡插入圖片描述
5:cd /root/nginx-1.14.0/auto/cc
6:vim gcc
註釋掉172行
在這裡插入圖片描述
7:安裝相關依賴性,如果不安裝,在下一步原始碼編譯的時候會報錯
yum install gcc openssl-devel pcre-devel -y

原始碼編譯

原始碼編譯三部曲:
(1):./configure #可使用./configure --help檢視相關引數用法
(2):make #開始編譯
(3):make install #安裝
1:cd /root/nginx-1.14.0
2:指定要按裝的目錄和要安裝的功能
./configure --prefix=/usr/local/nginx --with-http_ssl_module --with-http_stub_status_module --with-threads --with-file-aio
在這裡插入圖片描述
3:make
在這裡插入圖片描述
4:make install
在這裡插入圖片描述
此時原始碼編譯步驟完成

啟用Nginx服務

1:製作軟連結
ln -s /usr/local/nginx/sbin/nginx /sbin/ # 執行這條命令後,就可以用執行nginx直接開啟服務,相當於將nginx直接新增為系統命令
2:nginx -t ##檢測語法錯誤
nginx 開啟服務
nginx -s stop 關閉服務
nginx -s reload 重啟服務 #必須在nginx服務開啟狀態下執行重新載入
在這裡插入圖片描述
3:檢測,到客戶端使用curl 172.25.66.1 -I
在這裡插入圖片描述
4:nginx預設釋出目錄在/usr/local/nginx/html
預設釋出檔案:index.html

配置nginx虛擬主機實現負載均衡

1:cd /usr/local/nginx/conf/
vim nginx.conf
修改/新增以下內容:

  2 user  nginx nginx;
  3 worker_processes  1;
  4 worker_cpu_affinity 01;
  13 events {
  14     worker_connections  65535;
  15 }
  18 http {
  19         upstream westos {
  20         #ip_hash;   #雜湊演算法:一但檢測到ip,不改變後端伺服器
  21         server 172.25.6.2:80;
  22         server 172.25.6.3:80;
  23         #server 127.0.0.1 backup; ##當2和3服務全部關掉後, 預設訪問本機
  24         }
  124         server {
  125                 listen 80;
  126                 server_name www.westos.org;
  127
  128                 location / {
  129                 proxy_pass http://westos;
  130                 }
  131         }

在這裡插入圖片描述
在這裡插入圖片描述
在這裡插入圖片描述
2:useradd -M -d /usr/local/nginx/ nginx # 指定使用者家目錄建立使用者
3:nginx -t 檢測有沒有語法錯誤,如果有檢查檔案是否有錯誤
4:nginx -s reload
在這裡插入圖片描述
5:vim /etc/security/limits.conf
在最後寫入:
nginx - nofile 65536
在這裡插入圖片描述
6:開啟設定成虛擬主機的兩臺主機的http服務
7:在客戶端:
curl www.westos.org
在這裡插入圖片描述

新增模組(sticky)

nginx會話保持之nginx-sticky-module模組

Sticky是nginx的一個模組,它是基於cookie的一種nginx的負載均衡解決方案,通過分發和識別cookie,來使同一個客戶端的請求落在同一臺伺服器上,預設標識名為route
1.客戶端首次發起訪問請求,nginx接收後,發現請求頭沒有cookie,則以輪詢方式將請求分發給後端伺服器。
2.後端伺服器處理完請求,將響應資料返回給nginx。
3.此時nginx生成帶route的cookie,返回給客戶端。route的值與後端伺服器對應,可能是明文,也可能是md5、sha1等Hash值
4.客戶端接收請求,並儲存帶route的cookie。
5.當客戶端下一次傳送請求時,會帶上route,nginx根據接收到的cookie中的route值,轉發給對應的後端伺服器。
注意:cookie需要瀏覽器支援,且有時候會洩露資料

新增sticky模組

1:需要下載nginx的舊版本,這裡用10版本
nginx-1.10.1.tar.gz
2:再下載模組
nginx-sticky-module-ng.tar.gz
3:停用之前的nginx,必須停用,否則會衝突
nginx -s stop
在這裡插入圖片描述
4:解壓新下載的兩個包
在這裡插入圖片描述
5:重新進行原始碼編譯
cd nginx-1.10.1
(1):指定安裝目錄,注意不要和之前安裝的nginx在一個目錄,否則之前的nginx將會被完全覆蓋,新增sticky模組
./configure --prefix=/opt/nginx --with-http_ssl_module --with-http_stub_status_module --with-threads --with-file-aio --add-module=/root/nginx-sticky-module-ng
在這裡插入圖片描述
(2):make && make install #用&&將兩步直接連續執行
在這裡插入圖片描述
6:cd /opt/nginx/conf/
7:cp /usr/local/nginx/conf/nginx.conf nginx.conf
將之前安裝的nginx的配置檔案複製過來
在這裡插入圖片描述
8:vim /opt/nginx/conf/nginx.conf
21行寫入:
sticky;
在這裡插入圖片描述
9:檢測語法錯誤
/opt/nginx/sbin/nginx -t #必須用絕對路徑,否則會跟之前的版本衝突
/opt/nginx/sbin/nginx ##開啟服務
在這裡插入圖片描述
10:在瀏覽器中測試,因為有sticky演算法,所以不會發生輪詢,因為nginx伺服器會生成帶route的cookie返回給客戶端,所以當客戶端再一次發出請求時,會帶上route,nginx伺服器會根據route的值,將請求轉發給上次客戶端請求時,返回資料的後端伺服器
在這裡插入圖片描述
可以在瀏覽器中檢視cookies
按F12,然後在底部出現的框中點選右上方的設定按鈕,新增storage選項
在這裡插入圖片描述
新增完成後,點選storage就可以看到獲取到的cookies
在這裡插入圖片描述