Nginx-基礎篇
一、環境:
- 系統硬體:CPU>=2Core,記憶體>=256M
- 作業系統:CentOS 7.2 x64
二、環境除錯確認:
1、四個確認
-
確認系統網路
- ping www.baidu.com
-
確認yum可用
- yum list
-
確認關閉iptables規則
- iptables -L(檢視是否有iptables規則)
- iptables -F(關閉規則)
- iptables -t nat -L(檢視net表裡有沒有規則)
- 如果net表中有規則可以執行:iptables -t nat -F
-
確認停用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優勢:
- IO多路複用epoll
-
輕量級
- 功能模組少
- 程式碼模組少
-
CPU親和(affinity)
- 把CPU核心和Nginx工作程式繫結,把每個worker程式固定在一個cpu上執行,減少切換cpu的cache miss,獲得更好的效能。
-
sendfile
- 把檔案的傳輸只通過 kernel space傳輸給使用者,不經過 user space
五、Nginx的快速安裝
- 進入官網 http://nginx.org/
- 點選 download
- 點選 Linux packages for stable version
- 修改/etc/yum.repos.d/nginx.repo,並新增官網指定內容
注意:baseurl需要修改OS和OSRELEASE為你對應的伺服器版本
- 直接 yum install nginx
- 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日誌型別
- 包括了:error.log和access.log
- 通過nginx.conf配置檔案中log_format來定義要記錄的變數格式來記錄日誌
-
可以被記錄到日誌中的變數
-
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:重啟
-
http_stub_status_module(展示Nginx相關資訊)
- 配置語法:stub_status
- 預設:無
- Context:server,location
-
random_index_module
- 配置語法:random_index on|off
- 預設:random_index off
- Context:location
-
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
-
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
-
-
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
-
-
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自定義變數傳遞
-
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