nginx 的基本使用詳解
文章目錄
- nginx 的基本使用詳解
- 一、概念:
- 二、nginx的基本使用:
- 1.nginx的安裝:
- 2.nginx檔案格式:
- 3.nginx配置
- 3.1 nginx 組態檔結構
- 3.2 nginx server配置
- 4. 日志
- 4.1 nginx 錯誤日志
- 4.2 nginx 行程id
- 4.3 訪問日志
- 5. 反向代理服務器+負載均衡
- 6. 其他配置
一、概念:
Nginx是一款輕量級的 Web 服務器,通常用在反向代理、負載均衡和 HTTP 快取,是一個反向代理服務器軟體,
正向代理隱藏真實客戶端,反向代理隱藏真實服務端,
二、nginx的基本使用:
1.nginx的安裝:
yum install pcre pcre-devel
把nginx-1.17.2.tar.gz放在/yzy/test下
把pcre-8.38.tar.gz放在/yzy/test下
cd yzy/test/
tar -xzvf pcre-8.38.tar.gz
cd pcre-8.38
./configure
make
make install
cd ..
tar -xzvf nginx-1.17.2.tar.gz
cd nginx-1.17.2
./configure
make
make install
cd ..
cd conf/
修改nginx.conf
cd ..
cd sbin --------注啟動nginx配置的地方
停止操作
./nginx -s stop :快速停止nginx
./nginx -s quit :完整有序的停止nginx
重啟
./nginx -s reload
查詢nginx是否啟動
ps -ef | grep nginx

2.nginx檔案格式:
cd /yzy/test/nginx-1.17.2
看到如下4個目錄
… conf 組態檔
… html 網頁檔案
… logs 日志檔案
… sbin 主要二進制程式(啟動的地方)
3.nginx配置
3.1 nginx 組態檔結構
... #全域塊
events { #events塊
...
}
http #http塊
{
... #http全域塊
server #server塊
{
... #server全域塊
location [PATTERN] #location塊
{
...
}
location [PATTERN]
{
...
}
}
server
{
...
}
... #http全域塊
}
全域塊:配置影響nginx全域的指令,一般有運行nginx服務器的用戶組,nginx行程pid存放路徑,日志存放路徑,組態檔引入,允許生成worker process數等,
如:
1)user administrator administrators; #配置用戶或者組,默認為nobody nobody,
2)worker_processes 2; #允許生成的行程數,默認為1
3)pid /nginx/pid/nginx.pid; #指定nginx行程運行檔案存放地址
4)error_log log/error.log debug; #制定日志路徑,級別,這個設定可以放入全域塊,http塊,server塊,級別以此為:debug|info|notice|warn|error|crit|alert|emerg
events塊:配置影響nginx服務器或與用戶的網路連接,有每個行程的最大連接數,選取哪種事件驅動模型處理連接請求,是否允許同時接受多個網路連接,開啟多個網路連接序列化等,
events {
accept_mutex on; #設定網路連接序列化,防止驚群現象發生,默認為
on multi_accept on; #設定一個行程是否同時接受多個網路連接,默認為off
#use epoll; #事件驅動模型,select|poll|kqueue|epoll|resig|/dev/poll|eventport
worker_connections 1024; #最大連接數,這是指 一個子行程最大允許連1024個連接,默認為512
}
http塊:可以嵌套多個server,配置代理,快取,日志定義等絕大多數功能和第三方模塊的配置,如檔案引入,mime-type定義,日志自定義,是否使用sendfile傳輸檔案,連接超時時間,單連接請求數等,
server塊:配置虛擬主機的相關引數,一個http中可以有多個server,
location塊:配置請求的路由,以及各種頁面的處理情況,
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
}
}
}
3.2 nginx server配置
例子1: 基于域名的虛擬主機
server {
listen 80; #監聽埠
server_name a.com; #監聽域名
location / {
root /var/www/a.com; #根目錄定位
index index.html;
}
}
例子2: 基于埠的虛擬主機配置
server {
listen 8080;
server_name 192.168.1.204;
location / {
root /var/www/html8080;
index index.html;
}
}
4. 日志
4.1 nginx 錯誤日志
cd logs
ls

4.2 nginx 行程id
cat nginx.pid

4.3 訪問日志

5. 反向代理服務器+負載均衡
1: 硬體上做負載均衡, F5 BIG-IP ,硬體負載均衡(很貴).
直接從TCP/IP的底層協議上,直接做資料包的中轉.
2: 軟體負載均衡, LVS
3: 反向代理+負載均衡
用nginx做反向代理和負載均衡非常簡單,
支持兩個用法 1個proxy, 1個upstream,分別用來做反向代理,和負載均衡
代理例子:
location /test/ {
proxy_pass http://192.111.90.111:18901;
proxy_set_header Host $host:$proxy_port;
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;
}
負載均衡例子:
location /user {
proxy_pass http://usermanager;
}
upstream usermanager{
ip_hash;
server 192.111.90.11:28095 weight=10 max_fails=2 fail_timeout=30s;
server 192.111.90.12:28095 weight=20 max_fails=2 fail_timeout=30s;
}
weight:
負載均衡 ,nginx指向多個服務器去處理接受的請求,其中weight是設定權重
也就是說訪問三次 有一次是192.111.90.11上的服務來處理,二次是190.111.90.12上的服務來處理
max_fails與fail_timeout:
如上配置的含義為:后端節點30秒內出現2次不可用情況,判定節點不可用,判定不可用后30秒內請求不會轉發到此節點,直到30秒后重新檢測節點健康情況,
默認:fail_timeout為10s,max_fails為1次,
6. 其他配置
解決上傳大小限制:
client_max_body_size 50M;
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/4315.html
標籤:python
