快速搭建Nginx及其基本參數的配置

來源:互聯網
上載者:User
這篇文章主要介紹了關於 快速搭建Nginx及其基本參數的配置,有著一定的參考價值,現在分享給大家,有需要的朋友可以參考一下

Nginx的快速搭建和基本參數

一、Nginx簡介

1. Nginx簡述

Nginx是一個開源且高效能、可靠的HTTP中介軟體、代理服務。

2. 常見的HTTP服務

  • httpd - Apache

  • IIS - 微軟

  • GWE - Google

  • tomcat - Sun

二、為什麼選擇Nginx

1. IO多工epoll

什麼是IO多工

多個描述符的I/O操作都能在一個線程內並發交替地順序完成,這就叫I/O多工,這裡的“複用”指的是複用同一個線程。

什麼是epoll

IO多路服用的實現方式:select、poll、epoll
select

基本原理:
select 函數監視的檔案描述符分3類,分別是writefds、readfds、和exceptfds。調用後select函數會阻塞,直到有描述符就緒(有資料 可讀、可寫、或者有except),或者逾時(timeout指定等待時間,如果立即返回設為null即可),函數返回。當select函數返回後,可以通過遍曆fdset,來找到就緒的描述符。

select缺點:
1.能夠監視檔案描述符的數量存在最大限制。
2.線性掃描效率低下。

epoll

基本原理:
epoll支援水平觸發和邊緣觸發,最大的特點在於邊緣觸發,它只告訴進程哪些fd剛剛變為就緒態,並且只會通知一次。還有一個特點是,epoll使用“事件”的就緒通知方式,通過epoll_ctl註冊fd,一旦該fd就緒,核心就會採用類似callback的回調機制來啟用該fd,epoll_wait便可以收到通知。

epoll的優點:
1.沒有最大並發串連的限制,能開啟的FD的上限遠大於1024(1G的記憶體上能監聽約10萬個連接埠)。
2.效率提升,不是輪詢的方式,不會隨著FD數目的增加效率下降。
3.記憶體拷貝,利用mmap()檔案對應記憶體加速與核心空間的訊息傳遞;即epoll使用mmap減少複製開銷。

2. 輕量級

功能模組少

代碼模組化

3. CPU親和性(affinity)好

CPU親和性(affinity)是一種把CPU核心和Nginx背景工作處理序綁定方式,把每個worker進程固定在一個CPU上執行,減少CPU的cache miss,獲得更好的效能。

4. sendfile

三、Nginx的快速搭建和基本參數(CentOS7)

1. yum方式安裝【參考】

建立/etc/yum.repos.d/nginx.repo檔案,並輸入如下內容

[nginx]name=nginx repobaseurl=http://nginx.org/packages/mainline/OS/OSRELEASE/$basearch/gpgcheck=0enabled=1
OS 可選值有 centosrhel
OSRELEASE 為系統版本,例如 67 分別代表 6.x 和 7.x 的版本。

運行 yum install -y nginx 安裝nginx

運行 nginx -v 查看nginx版本

[root~]# nginx -vnginx version: nginx/1.14.0

2. 編譯參數詳解

查看nginx安裝時的編譯參數

nginx -V
[root~]# nginx -Vnginx version: nginx/1.14.0built by gcc 4.8.5 20150623 (Red Hat 4.8.5-16) (GCC)built with OpenSSL 1.0.2k-fips  26 Jan 2017TLS SNI support enabledconfigure arguments: --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 --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 --user=nginx --group=nginx --with-compat --with-file-aio --with-threads --with-http_addition_module --with-http_auth_request_module --with-http_dav_module --with-http_flv_module --with-http_gunzip_module --with-http_gzip_static_module --with-http_mp4_module --with-http_random_index_module --with-http_realip_module --with-http_secure_link_module --with-http_slice_module --with-http_ssl_module --with-http_stub_status_module --with-http_sub_module --with-http_v2_module --with-mail --with-mail_ssl_module --with-stream --with-stream_realip_module --with-stream_ssl_module --with-stream_ssl_preread_module --with-cc-opt='-O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector-strong --param=ssp-buffer-size=4 -grecord-gcc-switches -m64 -mtune=generic -fPIC' --with-ld-opt='-Wl,-z,relro -Wl,-z,now -pie'

安裝編譯參數詳解【參考】

編譯選項 作用
--prefix=/etc/nginx 設定檔目錄
--sbin-path=/usr/sbin/nginx 可執行檔名稱和所在目錄
--modules-path=/usr/lib64/nginx/modules nginx動態模組的安裝目錄
--conf-path=/etc/nginx/nginx.conf 主設定檔名稱和所在目錄
--error-log-path=/var/log/nginx/error.log 全域錯誤記錄檔檔案名稱和所在目錄
--http-log-path=/var/log/nginx/access.log HTTP伺服器的主請求記錄檔的名稱和所在目錄
--pid-path=/var/run/nginx.pid nginx.pid所在目錄,這是儲存主進程的進程ID檔案
--lock-path=/var/run/nginx.lock nginx.lock所在目錄
--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
設定Nginx進程啟動的使用者和使用者組
--with-http_random_index_module 目錄中隨機播放一個隨機首頁
--with-http_stub_status_module Nginx用戶端狀態
--with-http_sub_module HTTP內容替換
--with-cc-opt=<parameters> 設定額外的參數將被添加到CFLAGS變數
--with-ld-opt=<parameters> 設定附加參數,連結系統庫

3. 安裝目錄詳解

查看nginx所有檔案的安裝位置

rpm -ql nginx
[root~]# rpm -ql nginx/etc/logrotate.d/nginx/etc/nginx/etc/nginx/nginx.conf/etc/nginx/conf.d/etc/nginx/conf.d/default.conf/etc/nginx/fastcgi_params/etc/nginx/scgi_params/etc/nginx/uwsgi_params/etc/nginx/koi-utf/etc/nginx/koi-win/etc/nginx/win-utf/etc/nginx/mime.types/etc/sysconfig/nginx/etc/sysconfig/nginx-debug/usr/lib/systemd/system/nginx-debug.service/usr/lib/systemd/system/nginx.service/usr/lib64/nginx/usr/lib64/nginx/modules/etc/nginx/modules/usr/sbin/nginx/usr/sbin/nginx-debug/usr/share/doc/nginx-1.14.0/usr/share/doc/nginx-1.14.0/COPYRIGHT/usr/share/man/man8/nginx.8.gz/usr/share/nginx/usr/share/nginx/html/usr/share/nginx/html/50x.html/usr/share/nginx/html/index.html/var/cache/nginx/var/log/nginx/usr/libexec/initscripts/legacy-actions/nginx/usr/libexec/initscripts/legacy-actions/nginx/check-reload/usr/libexec/initscripts/legacy-actions/nginx/upgrade
預設路徑 類型 作用
/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/uwsig_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/nginx
/etc/sysconfig/nginx-debug
設定檔 用於配置出系統守護進程管理器管理方式
/usr/lib64/nginx/modules
/etc/nginx/mudules
目錄 Nginx模組目錄
/usr/sbin/nginx
/usr/sbin/nginx-debug
命令 Nginx服務的啟動管理的終端命令
/usr/share/doc/nginx-1.14.0
/usr/share/doc/nginx-1.14.0/COPYRIGHT
/usr/share/man/man8/nginx.8.gz
檔案、目錄 Nginx手冊和協助檔案
/var/cache/nginx 目錄 Nginx緩衝目錄
/var/log/nginx 目錄 Nginx日誌目錄

四、Nginx常用命令

命令 解釋
nginx [-c <設定檔>] 以指定的設定檔啟動nginx
nginx -s quit 正常停止nginx,Nginx在退出前完成已經接受的串連請求。
nginx -s stop 快速停止nginx,不管有沒有正在處理的請求。
nginx -s reload [-c <設定檔>] 重載設定檔
nginx -s reopen 重新開啟記錄檔
nginx -v 查看版本
nginx -V 查看安裝時的編譯參數
nginx -t [-c <設定檔>] 檢查設定檔文法是否正確

nginx -s reload 命令載入修改後的設定檔,命令下達後發生如下事件

  1. Nginx的master進程檢查設定檔的正確性,若是錯誤則返回錯誤資訊,nginx繼續採用原設定檔進行工作(因為worker未受到影響)

  2. Nginx啟動新的worker進程,採用新的設定檔

  3. Nginx將新的請求分配新的worker進程

  4. Nginx等待以前的worker進程的全部請求都返回後,關閉相關worker進程

  5. 重複上面過程,直到全部舊的worker進程都被關閉掉

以上就是本文的全部內容,希望對大家的學習有所協助,更多相關內容請關注topic.alibabacloud.com!

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.