Nginx-基礎篇

Nginx-基礎篇

1、環境:

  • 系統硬件:CPU>=2Core,內存>=256M
  • 操做系統:CentOS 7.2 x64

2、環境調試確認:

一、四個確認

  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)

二、兩項安裝

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

三、一次初始化

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

3、什麼是Nginx:

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


4、Nginx優點:

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

5、Nginx的快速安裝

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

    注意:baseurl須要修改OS和OSRELEASE爲你對應的服務器版本nginx

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


6、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:工做進程數

7、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內置
    • 自定義變量

8、Nginx模塊

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

  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:全局匹配vim

        注意:上述的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 usernameapp

相關文章
相關標籤/搜索