Nginx-基礎篇

来源:https://www.cnblogs.com/ronaldo-coder/archive/2018/04/20/8887958.html
-Advertisement-
Play Games

Nginx 基礎篇 1、環境: 系統硬體:CPU =2Core,記憶體 =256M 操作系統:CentOS 7.2 x64 2、環境調試確認: 一、四個確認 1. 確認系統網路 ping www.baidu.com 2. 確認yum可用 yum list 3. 確認關閉iptables規則 iptab ...


Nginx-基礎篇

一、環境:

  • 系統硬體:CPU>=2Core,記憶體>=256M
  • 操作系統:CentOS 7.2 x64

二、環境調試確認:

1、四個確認

  1. 確認系統網路
    • ping www.baidu.com
  2. 確認yum可用
    • yum list
  3. 確認關閉iptables規則
    • iptables -L(查看是否有iptables規則)
    • iptables -F(關閉規則)
    • iptables -t nat -L(查看net表裡有沒有規則)
    • 如果net表中有規則可以執行:iptables -t nat -F
  4. 確認停用selinux
    • getenforce(查看selinux是否開啟)
    • setenforce 0 (關閉selinux)

2、兩項安裝

  • 安裝gcc等:
    • yum -y install gcc gcc-c++ autoconf pcre pcre-devel make automake
  • 安裝基本工具:
    • yum -y install wget httpd-tools vim

3、一次初始化

  • cd /opt;mkdir app download logs work backup
    • app:代碼目錄
    • download:網上下載的源碼包
    • logs:自定義日誌
    • work:shell腳本
    • backup:備份

三、什麼是Nginx:

Nginx是一個開源且高性能、可靠的HTTP中間件、代理服務。


四、Nginx優勢:

  1. IO多路復用epoll
  2. 輕量級
    • 功能模塊少
    • 代碼模塊少
  3. CPU親和(affinity)
    • 把CPU核心和Nginx工作進程綁定,把每個worker進程固定在一個cpu上執行,減少切換cpu的cache miss,獲得更好的性能。
  4. sendfile
    • 把文件的傳輸只通過 kernel space傳輸給用戶,不經過 user space

五、Nginx的快速安裝

  1. 進入官網 http://nginx.org/
  2. 點擊 download
  3. 點擊 Linux packages for stable version
  4. 修改/etc/yum.repos.d/nginx.repo,並添加官網指定內容

    註意:baseurl需要修改OS和OSRELEASE為你對應的伺服器版本

  5. 直接 yum install nginx
  6. nginx -v 出現nginx的版本信息說明安裝成功!


六、Nginx的目錄和配置語法

  • rpm -ql nginx:可以查詢nginx安裝的文件
  • 目錄
    • /etc/logrotate.d/nginx:配置文件,Nginx日誌輪轉,用於logrotate服務的日誌切割
    • /etc/nginx、/etc/nginx/nginx.conf、/etc/nginx/conf.d、/etc/nginx/conf.d/default.conf:目錄、配置文件,Nginx主配置文件
    • /etc/nginx/fastcgi_params、/etc/nginx/uwsgi_params、/etc/nginx/scgi_params:配置文件,cgi配置相關,fastcgi配置
    • /etc/nginx/koi-utf、/etc/nginx/koi-win、/etc/nginx/win-utf:配置文件,編碼轉換映射轉化文件
    • /etc/nginx/mime.types:配置文件,設置http協議的Content-Type與擴展名對應關係
    • /usr/lib/systemd/system/nginx-debug.service、/usr/lib/systemd/system/nginx.service、/etc/sysconfig/negix、/etc/sysconfig/negix-debug:配置文件,配置守護進程管理器的管理方式
    • /usr/lib64/nginx/modules、/etc/nginx/modules:目錄,Nginx模塊目錄
    • /usr/sbin/nginx、/usr/sbin/nginx-debug:命令,Nginx服務的啟動管理的終端命令
    • /var/cache/nginx:目錄,Nginx的緩存目錄
    • /var/log/nginx:目錄,Nginx的日誌目錄
  • nginx -V:
  • 編譯參數
    • 安裝目的目錄或路徑
      • --prefix=/etc/nginx
      • --sbin-path=/usr/sbin/nginx
      • --modules-path=/usr/lib64/nginx/modules
      • --conf-path=/etc/nginx/nginx.conf
      • --error-log-path=/var/log/nginx/error.log
      • --http-log-path=/var/log/nginx/access.log
      • --pid-path=/var/run/nginx.pid
      • --lock-path=/var/run/nginx.lock
    • 執行對應模塊時,nginx所保留的臨時性文件
      • --http-client-body-temp-path=/var/cache/nginx/client_temp
      • --http-proxy-temp-path=/var/cache/nginx/proxy_temp
      • --http-fastcgi-temp-path=/var/cache/nginx/fastcgi_temp
      • --http-uwsgi-temp-path=/var/cache/nginx/uwsgi_temp
      • --http-scgi-temp-path=/var/cache/nginx/scgi_temp
    • 設定nginx進程啟動的用戶和用戶組
      • --user=nginx
      • --group=nginx
    • 設置額外的參數將被添加到CFLAGS變數
      • --with-cc-opt=parameters
    • 設置附加的參數,鏈接系統庫
      • --with-ld-opt=parameters
    • 目錄中隨機選擇一個主頁
      • --with-http_random_index_module
    • HTTP內容替換
      • --with-http_sub_module
    • Nginx的客戶端狀態
      • --with-http_stub_status_module
  • Nginx預設配置語法
    • user:設置nginx服務的系統使用用戶
    • worker_processes:工作進程數(最好跟cpu的數量保持一致)
    • error_log:nginx的錯誤日誌
    • pid:nginx服務啟動的pid
    • events:
      • worker_connections:每個進程允許最大連接數
      • use:工作進程數

七、Nginx日誌類型

  1. 包括了:error.log和access.log
  2. 通過nginx.conf配置文件中log_format來定義要記錄的變數格式來記錄日誌
  3. 可以被記錄到日誌中的變數
    • HTTP請求變數
      • arg_PARAMETER:request請求的參數
      • http_HEADER:request請求的header
      • sent_http_HEADER:服務端返回的header
    • 內置變數
      • Nginx內置
    • 自定義變數

八、Nginx模塊

nginx -tc /etc/nginx/nginx.conf:查詢配置文件語法是否正確
nginx -s reload -c /etc/nginx/conf:重啟

  1. http_stub_status_module(展示Nginx相關信息)
    • 配置語法:stub_status
    • 預設:無
    • Context:server,location
  2. random_index_module
    • 配置語法:random_index on|off
    • 預設:random_index off
    • Context:location
  3. http_sub_module
    • sub_filter string replacement
      • default:無
      • string:需要被替換的字元串
      • replacement:替換的字元串
    • sub_filter_last_modified on|off
      • default:sub_filter_last_modified off
    • sub_filter_once on|off
      • default:sub_filter_once on
      • on:只匹配第一個,off:全局匹配

        註意:上述的Context:http,server,location

  4. limit_conn_module(連接頻率限制)
    • limit_conn_zone
      • 配置語法:limit_conn_zone key zone=name:size
      • 預設:無
      • Context:http
    • limit_conn
      • 配置語法:limit_conn zone number
      • 預設:無
      • Context:http,server,location
  5. limit_req_module(請求頻率限制)
    • limit_req_zone
      • 配置語法:limit_req_zone key zone=name:size rate=rate
      • 預設:無
      • Context:http
    • limit_req
      • 配置語法:limit_req zone=name [brust=number] [nodelay]
      • 預設:無
      • Context:http,server,location
  6. http_access_module(基於IP的訪問控制)
    • allow
      • 配置語法:allow address|CIDR(網段)|unix:|all;
      • 預設:無
      • Context:http,server,location,limit_except
    • deny
      • 配置語法:deny address|CIDR(網段)|unix:|all;
      • 預設:無
      • Context:http,server,location,limit_except

        局限性:通過代理訪問會失效
        • 可以使用http_x_forwarded_for
        • 結合geo模塊
        • 通過http自定義變數傳遞
  7. http_auth_basic_module(基於用戶的信任登錄)
    • auth_basic
      • 配置語法:auth_basic string | off;
      • 預設:無
      • Context:http,server,location,limit_except
    • auth_basic_user_file
      • 配置語法:auth_basic_user_file filePath
      • 預設:無
      • Context:http,server,location,limit_except

        註意:file的格式是指定的,生成密碼可以使用httpd-tools
        命令htpasswd -c filePath username


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

-Advertisement-
Play Games
更多相關文章
  • 相關閱讀:Windows + IIS 環境部署Asp.Net Core App 1. HTTP Error 502.5 – Process Failure 環境 Windows Server 2012, IIS 8, Asp.Net Core 2. 故障 App按正常流程發佈後通過瀏覽器訪問出現以下 ...
  • 前言 最近打算用.NET Core寫一份簡單的後臺系統,來練練手 然後又用到了Entity Framework Core 發現園子里有些文章講得不是那麼細節,對於新手小白來說,可能會有點懵。 特意整理了幾個細節. 正文 數據遷移 首先EF CORE跟以前的EF6是有不同點的, 微軟官網列出的不同點: ...
  • 什麼是AutoMapper? 簡單來說就是將一個對象映射到另一個對象的代碼。 擺脫了繁瑣的賦值過程 (最常見也就是Model -——ViewModel) AutoMapper安裝 我使用的是VS2015 可以在NuGet中直接輸入AutoMapper 去下載 也可以使用控制台命令 PM> Insta ...
  • 里氏轉換 之前匆匆忙忙學過里氏轉換,但是又忘了,今天寫下博客來記錄吧。 概念:1 可以將子類對象(派生類)賦值給父類(基類)對象 父類:Person person=new Child(); 例子: 上圖就是一個簡單例子:將字元串數組ABC通過分隔符“|”進行分割,結果如黑視窗所示。 重點:請看紅筆劃 ...
  • 控制器的激活預設情況下使用反射來實現的,這其中採用了DI,單例等設計模式。對於控制器的主要涉及到如下的類:ControllerBuilder、DefaultControllerFactory、DefaultControllerActivator(實現了IControllerActivator介面)、 ...
  • .net core經歷2.0版本之後,已經非常穩定,完全可以進行企業級開發並跨平臺部署到幾乎任何伺服器.個人測試效率是.net core是.net framework效率的3倍.其他語言沒有測試,等測試之後會發出來供大家參考. 目前.net core的更新速度還是非常快滴,目前已經更新到了2.1,感 ...
  • 最近開始做UWP開發,圖省事兒就把自己之前一個Winform項目的一部分代碼拷貝到了新寫的UWP項目中來。整齣了一些么蛾子,下麵做一個記錄。 首先提一個重點就是:UWP里關於文件的操作儘量用StorageFile類來搞!!!!!!!!!!!! 1.UWP的文件選取 UWP的文件選取使用的是FileO ...
  • 學習ASP.NET Core Razor 編程系列目錄 學習ASP.NET Core Razor 編程系列一 學習ASP.NET Core Razor 編程系列二——添加一個實體 學習ASP.NET Core Razor 編程系列三——創建數據表及創建項目基本頁面 學習ASP.NET Core Ra ...
一周排行
    -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.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...