Nginx學習使用

2022-02-21 08:50:58 字數 4386 閱讀 1912

nginx是世界上第二大web伺服器,其他web伺服器有:apache、lighttpd、tomcat、jetty、iis。

區別:特點:

選擇nginx的核心理由是:它能夠在支援高併發請求的同時 保持高效的服務。nginx先天的事件驅動型設計、全非同步的網路i/o處理機制、極少的程序間切換以及許多優化設計,使得它天生善於處理高併發壓力下的網際網路請求。

以linux(ubuntu)為例,nginx的軟體包在ubuntu預設軟體倉庫中可用。 安裝非常簡單,只需鍵入以下命令:

sudo apt update

sudo apt install nginx

安裝後,配置檔案預設位置   /etc/nginx/nginx.conf

安裝完成後,請檢查nginx服務的狀態和版本:sudo systemctl status nginx

檢視版本:sudo nginx -v

您可以像任何其他systemd單位一樣管理nginx服務。 要停止nginx服務,請執行:sudo systemctl stop nginx

要再次啟動,請鍵入:sudo systemctl start nginx

重新啟動nginx服務:sudo systemctl restart nginx

停止nginx服務,請執行:sudo service nginx stop

nginx有很多的模組,這些模組可以幫助我們實現web伺服器上很多的功能。使用這些模組時,僅僅需要增加、修改一些配置項即可。

執行中的nginx程序間的關係:部署nginx時 都是使用乙個master程序來管理多個worker程序,一般情況下,worker程序的數量與伺服器上的cpu核心數相等。(這樣程序間切換的代價是最小的)

基本配置是其他模組執行時都依賴的配置項。分為以下4類:

1、用於除錯、定位問題的配置項;

(1) 是否以守護程序方式執行nginx

daemon on|off  預設是on,且配置檔案中不用寫

(2)是否以master/worker方式工作

master_process on|off  預設是on

(3)error日誌的設定

error_log  logs/error.log  error   【分別是 路徑和級別,當設定為error級別時,debug和info的日誌則不會輸出到檔案中】

2、正常執行的必備配置項;

(1)定義環境變數

env var= value;

(2)嵌入其他配置檔案

include /path/file;   可以將其他配置檔案嵌入到當前的nginx.conf檔案中,可以是絕對路徑,也可以相對路徑

(3)pid檔案的路徑

pid path/file;  儲存master程序id的pid檔案存放路徑。

預設:pid logs/nginx.pid;

(4)nginx worker程序執行的使用者及使用者組

user ;username [groupname];    

user用於設定master程序啟動後,fork出的worker程序執行在哪個使用者和使用者組下。

預設:user nobody nobody;

3、優化效能的配置項;

(1)worker程序個數

worker_processes number;

預設 number=1 ,一般cpu核心數為幾則設定為多少

(2)繫結worker程序到指定的cpu核心 。eg:

worker_processes 4;

worker_cup_affinity 1000 0100 0010 0001;

4、事件類配置項;

(1)每個worker的最大連線數

worker_connections number;

靜態web伺服器的主要功能有ngx_http_core_module模組(http框架的主要成員)實現。nginx為配置乙個完整的靜態web伺服器提供了非常多的功能,把這些配置項分為以下8類:

(1)虛擬主機與請求的分發

http塊中的每個server就是乙個虛擬主機,它只處理與之對應的主機網域名稱請求。所以以下配置均是在server塊中。

1、監聽埠

預設:listen 80;

listen 127.0.0.1:8000;

listen 8000;

listen localhost:8000;

設定預設虛擬主機,listen後加default或者default_server,將所在的server塊作為整個web服務的預設server塊。

2、主機名稱

預設:server_name "";

可以設定多個主機名稱,eg:server_name localhost www.testweb.com download.testweb.com;

在處理http請求時,nginx會取出header頭中的host,與每個server中的server_name進行匹配,

3、location

語法:location [=|~|~*|^~|@] /uri/

location會嘗試根據使用者請求中的uri來匹配上面的/uri表示式,如果可以匹配,就選擇location{} 塊中的配置來處理使用者請求。

location /

(2)檔案路徑的定義

1、以root方式設定資源路徑

root path;

預設:root html;

配置塊:http、server、location、if

eg:location /download

如果有乙個請求的uri是/download/index/test.html,那麼web伺服器將會返回伺服器上/opt/web/html/download/index/test.html 檔案的內容。

2、訪問首頁

index file...;

預設:index index.html;

eg:location /   請求的檔案是path/index.html ,若不存在,則訪問配置的第二個檔案。

3、根據http返回碼重定向頁面

例如:error_page 404 /404.html

(3)記憶體及磁碟資源的分配

反向**(reverse proxy)方式是指 用**伺服器來接受internet上的連線請求,然後將請求**給內部網路中的上游伺服器來處理。此時**伺服器對外的表現就是乙個web伺服器。

nginx通常可以配置為靜態的web伺服器,也可以配置為反向**伺服器。

負載均衡的基本配置

作為**伺服器,一般都需要向上游伺服器的集群**請求。這裡的負載均衡是指:選擇一種策略,盡量把請求平均地分到每一台上游伺服器上。

(1)upstream塊

語法:upstream name

配置塊:http 即upstream是位於http塊中的

upstream塊定義了乙個上游伺服器的集群,便於反向**中的proxy_pass使用。

eg:upstream backend{

server  backend1.example.com;

server  backend2.example.com;

(2)server

配置塊:upstream塊

語法:server name [parameters];

name可以是網域名稱、ip位址埠;

引數,可以是 weight=number,設定這台上游伺服器**的權重,預設為1;

反向**的基本配置

(1)proxy_pass

語法:proxy_pass url;

配置塊:location,if

將當前請求反向**到url引數指定的伺服器上,可以是主機名 或者ip位址加埠,還可以是負載均衡的upstream塊名,eg:proxy_pass http://backend;

預設情況下,反向**是不會**請求中的host頭部的。如果需要**,那麼必須加上配置:

proxy_set_header host $host; 

kill -9殺掉nginx主程序、reload失敗解決辦法 

kill -9 5767 14801

nginx教程(一) nginx入門教程

整理得很全面的nginx學習資源

nginx教程

使用nginx+iis的部署方案實現負載均衡

nginx學習與使用(1)

sudo apt install nginx以上為ubuntu安裝流程,centos安裝nginx步驟參考 檔案結構大致為 sudo nginx sudo etc init.d nginx start systemctl start nginx.service 開啟瀏覽器訪問機器的ip,若如下圖,則...

Nginx學習 一 Nginx安裝

4.結語 最近專案不太忙,阿里雲伺服器也快過期了,所以趁著這個空閒,好好利用伺服器資源,練練手,寫寫部落格。宣告 以下所有操作和截圖都來自於本人阿里雲伺服器例項,操作邏輯和nginx概述借鑑於其他nginx系列部落格。作業系統 centos7.2 64位 nginx是乙個免費的 開源的 高效能的we...

nginx簡單使用

安裝 服務控制指令碼 bin sh begin init info provides nginx required start local fs remote fs network syslog required stop local fs remote fs network syslog defa...