Nginx(二)

来源:http://www.cnblogs.com/yinshoucheng-golden/archive/2017/02/17/6409345.html
-Advertisement-
Play Games

利用include功能優化nginx的配置文件 [root@lnmp conf]# cat nginx.conf worker_processes 1; events { worker_connections 1024; } http { include mime.types; default_ty... ...


利用include功能優化nginx的配置文件

  1. [root@lnmp conf]# cat nginx.conf
  2. worker_processes 1;
  3. events {
  4.     worker_connections 1024;
  5. }
  6. http {
  7.     include mime.types;
  8.     default_type application/octet-stream;
  9.     sendfile on;
  10.     keepalive_timeout 65;
  11.     #nginx vhosts config
  12.     include extra/www.conf;
  13.     include extra/bbs.conf;
  14.     include extra/blog.conf;
  15. }

寫配置文件

  1. [root@lnmp conf]# mkdir extra
  2. [root@lnmp conf]# sed -n '18,25p' nginx.conf.base-name >extra/bbs.conf
  3. [root@lnmp conf]# cat extra/bbs.conf
  4.     server {
  5.         listen 80;
  6.         server_name bbs.etiantian.org;
  7.         location / {
  8.             root html/bbs;
  9.             index index.html index.htm;
  10.         }
  11.     }
  12. [root@lnmp conf]# sed -n '26,33p' nginx.conf.base-name >extra/blog.conf
  13. [root@lnmp conf]# cat extra/blog.conf
  14.    server {
  15.         listen 80;
  16.         server_name blog.etiantian.org;
  17.         location / {
  18.             root html/blog;
  19.             index index.html index.htm;
  20.         }
  21.     }
  22. [root@lnmp conf]# cat extra/www.conf
  23.     server {
  24.         listen 80;
  25.         server_name www.etiantian.org;
  26.         location / {
  27.             root html/www;
  28.             index index.html index.htm;
  29.         }
  30.     }

重啟服務

  1. [root@lnmp conf]# /application/nginx/sbin/nginx -t
  2. nginx: the configuration file /application/nginx-1.6.3/conf/nginx.conf syntax is ok
  3. nginx: configuration file /application/nginx-1.6.3/conf/nginx.conf test is successful
  4. [root@lnmp conf]# /application/nginx/sbin/nginx -s reload

測試

  1. [root@lnmp conf]# curl www.etiantian.org
  2. www.etiantian.org
  3. [root@lnmp conf]# curl bbs.etiantian.org
  4. bbs.etiantian.org
  5. [root@lnmp conf]# curl blog.etiantian.org
  6. blog.etiantian.org

nginx虛擬主機別名的配置

  1. [root@lnmp conf]# cat extra/www.conf
  2.     server {
  3.         listen 80;
  4.         server_name www.etiantian.org etiantian.org;
  5.         location / {
  6.             root html/www;
  7.             index index.html index.htm;
  8.         }
  9.     }
  10. [root@lnmp conf]# cat /etc/hosts
  11. 127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
  12. ::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
  13.  
  14. 192.168.31.132 server
  15. 192.168.31.133 lamp
  16. 192.168.31.134 lnmp www.etiantian.org bbs.etiantian.org blog.etiantian.org etiantian.org
  17. 192.168.31.136 backup
  18. [root@lnmp conf]# /application/nginx/sbin/nginx -t
  19. nginx: the configuration file /application/nginx-1.6.3/conf/nginx.conf syntax is ok
  20. nginx: configuration file /application/nginx-1.6.3/conf/nginx.conf test is successful
  21. [root@lnmp conf]# /application/nginx/sbin/nginx -s reload
  22. [root@lnmp conf]# curl etiantian.org
  23. www.etiantian.org
  24. [root@lnmp conf]# curl www.etiantian.org
  25. www.etiantian.org

啟動報錯:

  1. [root@lnmp ~]# /application/nginx/sbin/nginx -s reload
  2. nginx: [error] invalid PID number "" in "/application/nginx-1.6.3/logs/nginx.pid"

解決辦法:

  1. [root@lnmp ~]# /application/nginx/sbin/nginx -c /application/nginx/conf/nginx.conf
  2. [root@lnmp ~]# /application/nginx/sbin/nginx -s reload

nginx狀態信息配置

  1. [root@lnmp extra]# cat status.conf
  2. #status
  3. server{
  4.     listen 80;
  5.     server_name status.etiantian.org;
  6.     location / {
  7.         stub_status on;
  8.         access_log off;
  9.         }
  10.  
  11.     }

添加包含

  1. include extra/status.conf;

重啟nginx,瀏覽器訪問

第一個server表示nginx啟動到現在共處理了多少個連接。

第二個accepts表示nginx啟動到現在共創建了多少次握手,請求丟失次數=(握手次數-連接次數)。

第三個handled request表示總共處理了多少次請求。

Reading:nginx讀取到客戶端的header信息數。

writing:nginx返回給客戶端的header信息素。

waiting:nginx已經處理完正在等候下一次請求指令的駐留連接,開啟keep-alive的情況下,這個值等於active-(reading+writing)。

nginx錯誤日誌

常見的錯誤日誌級別有[debug|info|notice|warn|error|crit|alert|emerg],級別越高記錄的信息越少,生產場景一般是warm|error|crit這三個級別之一,註意不要配置info等級較低的級別,會帶來磁碟I/O消耗。

error_log的預設值為:error_log logs/error.log error

  1. [root@lnmp conf]# cat nginx.conf
  2. worker_processes 1;
  3.  
  4. error_log logs/error.log error;
  5. events {
  6.     worker_connections 1024;
  7. }
  8. http {
  9.     include mime.types;
  10.     default_type application/octet-stream;
  11.     sendfile on;
  12.     keepalive_timeout 65;
  13.     #nginx vhosts config
  14.     include extra/www.conf;
  15.     include extra/bbs.conf;
  16.     include extra/blog.conf;
  17. }

可以放置的標簽段為:main,http,server,location。

訪問日誌

log_format:用來定義記錄日誌的格式(可以定義多種日誌格式,取不同名字即可)。

access_log:用來指定日誌文件的路徑及使用的何種日誌格式記錄日誌。

  1. [root@lnmp conf]# cat nginx.conf
  2. worker_processes 1;
  3.  
  4. error_log logs/error.log error;
  5. events {
  6.     worker_connections 1024;
  7. }
  8. http {
  9.     include mime.types;
  10.     default_type application/octet-stream;
  11.     sendfile on;
  12.     keepalive_timeout 65;
  13.  
  14.     log_format main '$remote_addr - $remote_user [$time_local] "$request" '
  15.                       '$status $body_bytes_sent "$http_referer" '
  16.                       '"$http_user_agent" "$http_x_forwarded_for"';
  17.  
  18.  
  19.     #nginx vhosts config
  20.     include extra/www.conf;
  21.     include extra/bbs.conf;
  22.     include extra/blog.conf;
  23. }

$remote_addr:記錄訪問網站的客戶端地址。

$http_x_forwarded_for:當前端有代理伺服器時,設置web節點記錄客戶端地址的配置,此參數生效的前提是代理伺服器上也要進行相關的x_forwarded_for設置。

$remote_user:遠程客戶端用戶名稱。

$time_local:記錄訪問時間與時區。

$request:用戶的http請求起始行信息。

$status:http狀態碼,記錄請求返回的狀態,例如:200、404、301等。

$body_bytes_sent:伺服器發送給客戶端的響應body位元組數。

$http_referer:記錄此次請求是從哪個鏈接訪問過來的,可以根據referer進行防盜鏈設置。

$http_user_agent:記錄客戶端訪問信息,例如:瀏覽器、手機客戶端等。

access_log off;這裡的off表示不記錄訪問日誌。

預設配置:access_log logs/access.log combined;

放置位置:http,server,location,if in location,limit_except。

  1. [root@lnmp conf]# cat extra/www.conf
  2.     server {
  3.         listen 80;
  4.         server_name www.etiantian.org etiantian.org;
  5.         location / {
  6.             root html/www;
  7.             index index.html index.htm;
  8.         }
  9.         access_log logs/access_www.log main;
  10.     }

重啟nginx

  1. [root@lnmp conf]# /application/nginx/sbin/nginx -t
  2. nginx: the configuration file /application/nginx-1.6.3/conf/nginx.conf syntax is ok
  3. nginx: configuration file /application/nginx-1.6.3/conf/nginx.conf test is successful
  4. [root@lnmp conf]# /application/nginx/sbin/nginx -s reload
  5. [root@lnmp conf]# tail -f ../logs/access_www.log #訪問日誌
  6. 192.168.31.1 - - [16/Feb/2017:23:35:38 +0800] "GET / HTTP/1.1" 200 18 "-" "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.87 Safari/537.36" "-"
  7. 192.168.31.1 - - [16/Feb/2017:23:35:38 +0800] "GET /favicon.ico HTTP/1.1" 404 570 "http://www.etiantian.org/" "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.87 Safari/537.36" "-"

日誌輪詢

  1. [root@lnmp scripts]# cat cut_nginx_log.sh
  2. #!/bin/sh
  3. Dateformat=`date +%Y%m%d`
  4. Basedir="/application/nginx"
  5. Nginxlogdir="$Basedir/logs"
  6. Logname="access_www"
  7. [ -d $Nginxlogdir ] && cd $Nginxlogdir||exit 1
  8. [ -f ${Logname}.log ]||exit 1
  9. /bin/mv ${Logname}.log ${Dateformat}_${Logname}.log
  10. $Basedir/sbin/nginx -s reload

執行

  1. [root@lnmp scripts]# sh cut_nginx_log.sh
  2. [root@lnmp scripts]# ll /application/nginx/logs/
  3. total 24
  4. -rw-r--r--. 1 root root 978 Feb 16 23:35 20170216_access_www.log

設置定時任務

  1. #nginx log cut
  2. 00 00 * * * /bin/sh /server/scripts/cut_nginx_log.sh >/dev/null 2>&1

nginx常用日誌收集及分析工具有rsyslog、awstats、flume、ELK、storm等。

rewrite

rewrite指令語法

指令語法:rewrite regex replacement [flag];

預設值:none

應用位置:server,location,if。

  1. [root@lnmp conf]# cat extra/www.conf
  2.     server {
  3.         listen 80;
  4.         server_name etiantian.org;
  5.         rewrite ^/(.*) http://www.etiantian.org/$1 permanent;
  6.     }
  7.  
  8.     server {
  9.         listen 80;
  10.         server_name www.etiantian.org;
  11.         location / {
  12.             root html/www;
  13.             index index.html index.htm;
  14.         }
  15.         access_log logs/access_www.log main;
  16.     }

創建oldboy.html然後進行訪問

  1. [root@lnmp www]# curl etiantian.org/oldboy.html -I
  2. HTTP/1.1 301 Moved Permanently
  3. Server: nginx/1.6.3
  4. Date: Thu, 16 Feb 2017 16:30:47 GMT
  5. Content-Type: text/html
  6. Content-Length: 184
  7. Connection: keep-alive
  8. Location: http://www.etiantian.org/oldboy.html

rewrite指令最後一項參數flag標記說明

last:本條規則匹配完成後,繼續向下匹配新的location URI規則。

break:本條規則匹配完成即終止。不再匹配後面的任何規則。

redirect:返回302臨時重定向,瀏覽器地址欄會顯示跳轉後的URL地址。

permanent:返回301永久重定向,瀏覽器地址欄會顯示後的URL地址。


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 前面很多篇不管CPU、記憶體、磁碟、語句等等等都提到了索引的重要,我想剛剛開始學資料庫的在校學生都知道索引對語句性能的重要性。但他們可能不知道,對語句的重要性就是對系統的重要性! 開篇小測驗 開篇小測驗 下麵這樣一個小SQL 你該怎麼樣添加最優索引 你是否一眼就能看出來呢? 答案將在文章中逐步揭曉~~ ...
  • 又自學,把SQL的一些常用語句複習了一遍。 整理如下: 1增 1.1【插入單行】insert [into] <表名> (列名) values (列值)例:insert into Strdents (姓名,性別,出生日期) values ('開心朋朋','男','1980/6/15') 1.2【將現有 ...
  • 在電腦上下載並安裝UltraISO軟體,如百度雲:http://pan.baidu.com/s/1hrGtvEG 打開UltraISO軟體,找到CentOS.iso的映像文件,點擊<啟用>,選擇<寫入硬碟映像...> 硬碟驅動器,選擇U盤,勾選<刻錄校驗>,確保數據完整寫到了U盤上去; 接下來選擇" ...
  • 本文參考了http://www.cnblogs.com/wangxiaoqiangs/p/6179610.html, 自己操作中收穫一些錯誤心得.記下以備用. 一. 準備工作: 1. 下載nginx並安裝 推薦到nginx官方網站下載並安裝,有很詳細的教程. 參考資料: http://nginx.o ...
  • 在linux上使用vi命令修改或者編輯一個文件內容的時候,最後發現使用<Esc+:+wq!>無法保存退出,卻出現,如下提示: E212: Can't open file for writing Press ENTER or type command to continue 出現這個錯誤的原因可能有兩 ...
  • /:根目錄,根目錄下一般只存放子目錄,不存放文件。在linux系統中所有的文件都掛載該目錄下。 /bin:命令目錄。 存放系統的可執行的二進位文件,如常用的命令ls、tar、mv、cat等。 /boot:存放linux系統啟動時需要的一些文件。 /dev:設備目錄。存放linux系統下的設備文件,訪 ...
  • 我們以centOS為例來說說如何部署node.js環境 一 打開centos,然後開始下載node.js包 二 安裝gcc環境 安裝完成! 三 安裝nodejs的npm,這是一個包程式工具,類似於vs里的nuget! 到現在為止,我們的nodejs環境就算是安裝成功,下麵我們就可以開始node.js ...
  • MySQL 資料庫的使用是非常的廣泛,穩定性和安全性也非常好,經歷了無數大小公司的驗證。僅能夠安裝使用是遠遠不夠的,MySQL 在使用中需要進行不斷的調整參數或優化設置,才能夠發揮 MySQL 的最大作用。下邊的內容是我在工作中經驗的總結,也作為自己的工作筆記,如果能夠幫助到有需要的同志就更好了。M ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...