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、四個確認
- 確認系統網路
- 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內置
- 自定義變數
- HTTP請求變數
八、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
- sub_filter string replacement
- 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_conn_zone
- 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
- limit_req_zone
- 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自定義變數傳遞
- allow
- 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
- auth_basic