Linux 安裝Nginx與使用

Cfan1236發表於2019-07-06

 

最近繼續整理Linux相關文件。這次整理的是Nginx,這裡將自己整理的詳細文件做個筆記。

 

1.  安裝環境依賴包

1、 gcc 語言編譯器套件。

2、 pcre 相容正規表示式的庫 rewrite 模組需要。

3、 zlib 提供資料壓縮函式庫 例如gzip壓縮。

4、 openssl 使用https所需的ssl。

 

一起安裝四個依賴環境包 (如果某些元件已安裝可以不用安裝)

yum -y install gcc zlib zlib-devel pcre-devel openssl openssl-devel

 

2.  下載和解壓安裝包

官網查詢最新安裝包。 

http://nginx.org/en/download.html

 

 

下載1.17.1下載地址

http://nginx.org/download/nginx-1.17.1.tar.gz

在/usr/local下建立Nginx目錄。 (目錄可以自定義)

mkdir nginx

下載

wget http://nginx.org/download/nginx-1.17.1.tar.gz

解壓

tar -xvf nginx-1.17.1.tar.gz

 

 

3.  安裝

切換到安裝後的目錄。

 cd nginx-1.17.1

./configure

make

make install

這幾步如果有報錯,多數是因為依賴環境沒裝好比如gcc等,需要重新安裝再重複此步驟。

 

新增到環境變數

ln -s  /usr/local/nginx/sbin/nginx  /usr/bin

安裝成功後檢視版本

nginx -v

 

 

4.  設定開機啟動

vim /lib/systemd/system/nginx.service

注意nginx 路徑必須為自己安裝的路徑

 

 

 

【以下純文字可以複製】

[Unit]
Description=nginx - high performance web server
Documentation=http://nginx.org/en/docs/
After=network.target
[Service]
Type=forking
ExecStart=/usr/local/nginx/sbin/nginx
ExecReload=/usr/local/nginx/sbin/nginx -s reload
ExecStop=/usr/local/nginx/sbin/nginx -s  stop
PrivateTmp=true
   
[Install]  
WantedBy=multi-user.target

 

開機啟動

systemctl enable nginx

 

 

 

5.  Nginx使用與配置

常用命令

nginx                      # 執行nginx
nginx -s reload            # 重新載入配置檔案並執行
nginx -s reopen            # 重啟 Nginx
nginx -s stop              # 停止 Nginx

執行Nginx

nginx

 

 

直接輸入nginx 沒有任何其他提示證明啟動成功

配置檔案

位置(注意自己安裝的目錄)

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

預設配置檔案內容

 

 

 

啟動nginx後 可以直接通過http://localhost (或者http://自己的ip)訪問。檢視nginx歡迎頁面。

如果伺服器80埠被佔用了 那麼使用nginx命令時會報錯。請修改配置檔案裡的預設80埠即可。

配置檔案的修改後必須要:nginx –s reload 才能生效。

靜態伺服器

server {
        listen   80;         #監聽埠                                 
        server_name  localhost;     #如果繫結了域名 這裡填寫具體域名    
        client_max_body_size 1024M;  #客戶端最大上傳檔案限制
        location / {
               autoindex on; //開啟目錄訪問
               root   /data/wwwroot/webapp;  #站點目錄
               index  index.html;    #首頁
       }
}

動靜分離 

這裡展示通過副檔名分離的方法

當然還有通過請求分離使用在localtion /static/ {} 等。

server {
        listen   80;         #監聽埠                                 
        server_name  localhost;     #如果繫結了域名 這裡填寫具體域名   
        #靜態資料
        location ~ .(gif|jpg|jpeg|png|bmp|swf|css|js)$     {  
             root    /data/wwwroot/webapp/html;  
        }  
        #動態請求
        location ~ .(aspx|cshtml)$ {  
            proxy_pass  http://localhost:8080   #動態伺服器站點執行地址
        }  
}

反向代理

適合單臺伺服器應用程式部署,轉發

server {  
        listen       80;                                  
        server_name  localhost;                           
        client_max_body_size 1024M;
        location / {
            proxy_pass http://localhost:8080;  #代理伺服器 比如動態應用程式站點
            proxy_set_header Host $host:$server_port;  #請求頭資訊部分資訊一併轉發到代理伺服器
        }
  }

均衡負載

最常用的,適合多臺伺服器部署應用程式,對外都是同一個域名或站點訪問

# 伺服器列表 
upstream webapp{
        server 192.1681.2:8080 weight=9;  #weight 權重
        server 192.168.1.3:8080 weight=1; 
    }
    server {
        listen       81;                                
        server_name  localhost;                         
        client_max_body_size 1024M;
        location / {
            proxy_pass http://webapp;     #代理指向伺服器列表
            proxy_set_header Host $host:$server_port;
            #獲取真實客戶端訪問IP,原理還是將客戶端和IP有關的請求頭轉發到應用伺服器
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header REMOTE-HOST $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        }
}

配置Https

https需要依賴openssl包。

nginx開啟SSL模組

檢查自己是否有開啟SSL模組

nginx –V  (大寫的V)

 

 

看到有with-http_ssl_module證明已經開啟

如果沒有則證明沒有開啟;以下操作都是針對沒有開啟with-http_ssl_module的。

進入自己的安裝目錄執行:

./configure --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module

 

 

配置完成後執行編譯   

make

 

備份已經安裝好的nginx (注意自己的安裝目錄)

cp /usr/local/nginx/sbin/nginx /usr/local/nginx/sbin/nginx.bak

停止正在執行的nginx

nginx -s stop

複製新編譯好的nginx覆蓋原有nginx

cp ./objs/nginx /usr/local/nginx/sbin/

 

 

檢視是否配置成功

nginx –V  (大寫的V)

 

修改站點配置節點

 

#server {
   listen       443 ssl;  #監聽埠改為443
   server_name  localhost;

   ssl_certificate      cert.pem;   #證書prm檔案路徑
   ssl_certificate_key  cert.key;    #證書key檔案路徑

   ssl_session_cache    shared:SSL:1m;    #設定會話快取大小
   ssl_session_timeout  5m;     #客戶端可以重用會話快取中ssl引數的過期時間

   ssl_ciphers  HIGH:!aNULL:!MD5;    #加密方式  
   ssl_prefer_server_ciphers  on;   #設定加密演算法時,優先使用服務端的加密演算法
      location / {
         root   html;
         index  index.html index.htm;
    }
 }

配置Http2

配置Http2 Nginx 版本必須大於1.10.0以上。Openssl版本必須大於1.0.2。

在Nginx裡面使用Http2必須得使用Https才行。

可以通過Nginx –V檢視目前已安裝的版本。

Http2需要開啟with-http_v2_module模組

配置with-http_v2_module等模組然後make 然後覆蓋安裝等。 具體不就不再演示了和配置Https一樣。

./configure --prefix=/usr/share/nginx --with-http_stub_status_module --with-http_ssl_module --with-http_v2_module --with-http_gzip_static_module --with-ipv6 --with-http_sub_module

 

相關文章