日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

nginx-基础知识

發布時間:2023/12/8 编程问答 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 nginx-基础知识 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

基礎知識

    • 一 反向代理
    • 二 nginx的進程模型解析
    • 三 nginx處理web請求機制解析
    • 四 nginx核心配置文件nginx.conf
      • 4.1 user
      • 4.2 worker_processes
      • 4.3 nginx日志級別
      • 4.4 pid
      • 4.5 設置工作模式
      • 4.6 http
      • 4.7 include
      • 4.8 設置日志格式
      • 4.9 sendfile
      • 4.10 keepalive_timeout
      • 4.11 gzip
      • 4.12 server
    • 五 nginx.pid打開失敗以及失效的解決辦法
    • 六 nginx常用命令解析
      • 6.1 快速停止nginx
      • 6.2 優雅關閉nginx
      • 6.3 檢查nginx.conf配置文件是否正常
      • 6.4 查看nginx當前版本號
      • 6.5 幫助
      • 6.6 指定一個特定的nginx核心配置文件
    • 七 nginx日志切割
      • 7.1 nginx日志切割-手動
      • 7.2 nginx日志切割-定時
    • 八 虛擬主機-nginx訪問靜態資源
      • 8.1 首先將資源復制到Linux(例如在/home下)
      • 8.2 然后在nginx.conf里面配置server
      • 8.3 location的匹配規則

一 反向代理

正向代理和反向代理的區別
– 正向代理:用戶決定訪問哪個服務器
– 反向代理:代理決定訪問哪個服務器

二 nginx的進程模型解析

nginx采用單主進程,多子進程(nginx.conf worker_processes 默認為1)的模型,master管理worker,master接收外部請求或指令,分配給worker去執行,worker關閉時,會等待當前客戶連接釋放后,才會關閉,多進程雖然會帶來額外的內存開銷,采用多進程而不采用多線程的原因:

  • 進程之間相互獨立,互不影響,某一個worker出問題不會影響其他worker
  • 不需要開發人員去額外關注線程安全性

三 nginx處理web請求機制解析

nginx采用的是異步非阻塞,在Linux上默認使用epoll模型

四 nginx核心配置文件nginx.conf

4.1 user

設置worker進程的用戶,指的是Linux的用戶,會涉及到nginx操作目錄或文件的一些權限,默認為nobody

user root;

4.2 worker_processes

worker進程工作數設置,一般來說CPU有幾個,就設置幾個,或者設置為N-1也行

worker_processes 1;

4.3 nginx日志級別

nginx日志級別debug|info|notice|warn|error|erit|alert|emerg錯誤級別從左到右越來越大。

4.4 pid

設置nginx進程pid

pid logs/nginx.pid

4.5 設置工作模式

events {# 默認使用epolluse epoll;# 每個worker允許連接的客戶端最大連接數worker_connections 10240; }

4.6 http

http是指令塊,針對http網絡傳輸的一些指令配置

http { }

4.7 include

include引入外部配置,提高可讀性,避免單個配置文件過大

include mime.types;

4.8 設置日志格式

參數名參數意義
$remote_addr客戶端IP
$remote_user遠程客戶端用戶名,一般為:’-’
$time_local時間和時區
$request請求的URL及method
$status響應狀態碼
$body_bytes_send響應客戶端內容字節數
$http_referer記錄用戶從哪個鏈接跳轉過來的
$http_user_agent用戶所使用的代理,一般來時都是瀏覽器
$http_x_forwarded_for通過代理服務器來記錄客戶端的IP

4.9 sendfile

sendfile使用高效文件傳輸,提升傳輸性能。啟用后才能使用tcp_nopush,是指當數據表積累一定大小后才發送,提高了效率。

sendfile on; tcp_nopush no;

4.10 keepalive_timeout

keepalive_timeout設置客戶端與服務端請求的超時時間,保證客戶端多次請求的時候不會重復建立新的連接,節約資源損耗。

keepalive_timeout 65;

4.11 gzip

gzip啟用壓縮,html/js/css壓縮傳輸后會更快

gzip on; #限制最小壓縮,小于1字節的文件不會壓縮 gzip_min_length 1; #定義壓縮的級別(壓縮比取值范圍1-9,值越大,壓縮比越大,文件越大,壓縮越多,但是cpu使用會越多) gzip_comp_level 3; #定義壓縮文件的類型 gzip_types text/plain application/javascript application/x-javascript text/css application/xml text/javascript application/x-httpd-php image/jpeg image/gif image/png application/json;

4.12 server

server可以在http指令塊中設置多個虛擬主機

  • listen 監聽端口
  • server_name localhost,ip,域名
  • location 請求路由映射,匹配攔截
  • root 請求位置
  • index 首頁設置
server {listen 88;server_name localhost;location / {root html;index index.html index.htm} }

五 nginx.pid打開失敗以及失效的解決辦法

  • nginx.pid讀取失敗:將目錄重新創建一下

  • pid無效:./nginx -c nginx.conf (重新指定一下nginx.conf)
  • nginx默認的pid是放在logs之下的;也可以在logs目錄下創建默認的pid文件

六 nginx常用命令解析

6.1 快速停止nginx

# 該命令會立刻關掉nginx,即使有客戶端在和服務器連接 ./nginx -s stop

6.2 優雅關閉nginx

# 等待所有連接(http請求)都關閉后再停止nginx ./nginx -s quit

6.3 檢查nginx.conf配置文件是否正常

./nginx -t

6.4 查看nginx當前版本號

./nginx -v # 展示nginx當前版本號 ./nginx -V # 展示nginx更詳細的版本信息

6.5 幫助

./nginx -h ./nginx -?

6.6 指定一個特定的nginx核心配置文件

./nginx -c

(可能會有多種不同類型配置文件, 可以使用-c 為當前切換指定配置文件 類似 dev.yml/prod.ym)

七 nginx日志切割

7.1 nginx日志切割-手動

① 創建一個shell可執行的文件cut_my_log.sh

#!/bin/bash LOG_PATH="/var/log/nginx/" RECORD_TIME=$(date -d "yesterday" +%Y-%m-%d+%H:%M) PID=/var/run/nginx/nginx.pid mv ${LOG_PATH}/access.log ${LOG_PATH}/access.${RECORD_TIME}.log mv ${LOG_PATH}/error.log ${LOG_PATH}/error.${RECORD_TIME}.log#向Nginx主進程發送信號,用于重新打開日志文件 kill -USR1 `cat $PID`

② 為cut_my_log.sh添加權限

chmod +x cut_my_log.sh

③ 測試日志切割后的結果

./cut_my_log.sh

7.2 nginx日志切割-定時

① 安裝定時任務

yum install crontabs

② crontab -e 編輯并且添加一行新的任務;

*/1 * * * * /usr/local/nginx/sbin/cut_my_log.sh

③ 重啟定時任務:

service crond restart
  • 附:常用定時任務命令:
service crond start //啟動服務 service crond stop //關閉服務 service crond restart //重啟服務 service crond reload //重新載入配置 crontab -e // 編輯任務 crontab -l // 查看任務列表

定時任務表達式:
cron表達式是,分為5或6個域,每個域代表一個含義,如下所示:

分時日月星期幾年(可選)
取值范圍0-590-231-311-121-72019/2020/2021

常用表達式:

  • 每分鐘執行:
*/1 * * * *
  • 每日凌晨(每天晚上23.59)執行
59 23 * * *
  • 每日凌晨一點執行
0 1 * * *

八 虛擬主機-nginx訪問靜態資源

靜態資源分為兩類:
html/css/js
視頻,音頻,圖片

8.1 首先將資源復制到Linux(例如在/home下)

8.2 然后在nginx.conf里面配置server

server {listen 90;server_name localhost;location / {root /home/foodie-shopindex index.html}location /imooc {# root 使用時是拼接上面的,例如: /home/imoocroot /home}location /static {# alias 使用時上面的是下面的別名,例如訪問/home/imooc目錄下的內容,可以使用/staticalias /home/imooc} }

8.3 location的匹配規則

  • 空格,默認匹配
location / {root /home/foodie-shopindex index.html }
  • “=”精準匹配
location = /imooc/img/face1.png {root /home; }
  • “~*” 匹配正則表達式,不區分大小寫
#符合圖片的顯示 location ~* .(GIF|jpg|png|jpeg) {root /home; }
  • “~” 匹配正則表達式,區分大小寫
#GIF必須大寫才能匹配到 location ~ .(GIF|jpg|png|jpeg) {root /home; }
  • “^~” 以某個字符路徑開頭,只能訪問這個路徑下的內容
location ^~ /imooc/img {root /home; }

總結

以上是生活随笔為你收集整理的nginx-基础知识的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。