nginx

 

1、 Nginx 簡介javascript

  Nginx 是由俄羅斯軟件工程師 Igor Sysoev 開發的一個高性能的 HTTP 和反向代理服務器,具有 IMAP/POP3 和 SMTP 服務器功能。php

    做爲 Web 服務器:相比較與 Apache, Nginx 使用更少的資源,支持更多的併發鏈接,體現更高的效率,這點使 Nginx 尤其受到虛擬主機提供商的歡迎,可以支持高達 50000 個併發的鏈接數的響應。css

    做爲負載均衡服務器: Nginx 既能夠在內部直接支持 Rails 和 PHP,也能夠支持做爲 HTTP代理服務器對外驚醒服務, Nginx 用 C 語言編寫,不管是系統資源開銷仍是 CPU 使用效率都比 Perlbal 要好的多。html

    做爲郵件代理服務器: Nginx 同時也是一個很是優秀的郵件代理服務器。(最先開發這個產品的目的之一也是做爲郵件代理服務器)java

2、CentOS 7下安裝部署
  配置epel yum 源
    wget http://dl.Fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm 
    rpm -ivh epel-release-latest-7.noarch.rpm
    yum install nginx -ynode


查看確認 是否安裝
  root@localhost ~]# rpm -qa | grep nginx
    nginx-1.10.2-1.el7.x86_64
    nginx-mod-stream-1.10.2-1.el7.x86_64
    nginx-mod-http-geoip-1.10.2-1.el7.x86_64
    nginx-all-modules-1.10.2-1.el7.noarch
    nginx-mod-http-perl-1.10.2-1.el7.x86_64
    nginx-mod-http-image-filter-1.10.2-1.el7.x86_64
    nginx-mod-mail-1.10.2-1.el7.x86_64
    nginx-filesystem-1.10.2-1.el7.noarch
    nginx-mod-http-xslt-filter-1.10.2-1.el7.x86_64linux


查看 安裝nginx 所生成的文件 
  [root@localhost ~]# rpm -ql nginx 
    /etc/logrotate.d/nginxnginx

  /etc/nginx/fastcgi.conf
  /etc/nginx/fastcgi.conf.default
  ...........瀏覽器


3、測試nginx 
  啓動nginx  
    systemctl start nginx服務器

  設置開機啓動 
    systemctl enable nginx

查看nginx 啓動狀態
  systemctl status nginx

查看是否監聽

 ss -tnl | grep 80 
  LISTEN    0      128          *:80                      *:*                  
  LISTEN    0      128        :::80                      :::* 


測試 nginx

在瀏覽器中輸入 nginx 服務器的ip 地址 
  備註:若是不能正常訪問,關閉防火牆
  systemctl stop firewalld.service #中止firewall
  systemctl disable firewalld.service #禁止firewall開機啓動
  firewall-cmd --state #查看默認防火牆狀態(關閉後顯示notrunning,開啓後顯示running)

  測試頁面

安裝成功

4、nginx 的配置文件說明

配置文件路徑  /etc/nginx/nginx.conf

  #運行用戶
    user nginx;
  #啓動進程,一般設置成和 cpu 的數量相等
    worker_processes 1;
  #全局錯誤日誌及 PID 文件
    #error_log logs/error.log;
    #error_log logs/error.log notice;
    #error_log logs/error.log info;
    #pid logs/nginx.pid;
  #工做模式及鏈接數上限
    events {
      #epoll 是多路複用 IO(I/O Multiplexing)中的一種方式,
      #僅用於 linux2.6 以上內核,能夠大大提升 nginx 的性能
      use epoll;
      #單個後臺 worker process 進程的最大併發連接數
      worker_connections 1024;
      # 併發總數是 worker_processes 和 worker_connections 的乘積
      # 即 max_clients = worker_processes * worker_connections
      # 在設置了反向代理的狀況下, max_clients = worker_processes * worker_connections / 4

      爲何
      # 爲何上面反向代理要除以 4,應該說是一個經驗值
      # 根據以上條件,正常狀況下的 Nginx Server 能夠應付的最大鏈接數爲: 4 * 8000 = 32000
      # worker_connections 值的設置跟物理內存大小有關
      # 由於併發受 IO 約束, max_clients 的值須小於系統能夠打開的最大文件數
      # 而系統能夠打開的最大文件數和內存大小成正比,通常 1GB 內存的機器上能夠打開的文件數大約是10 萬左右
      # 咱們來看看 360M 內存的 VPS 能夠打開的文件句柄數是多少:
      # $ cat /proc/sys/fs/file-max
      # 輸出 34336
      # 32000 < 34336,即併發鏈接總數小於系統能夠打開的文件句柄總數,這樣就在操做系統能夠承受的範圍以內
      # 因此, worker_connections 的值需根據 worker_processes 進程數目和系統能夠打開的最大文件總數進行適當地進行設置
      # 使得併發總數小於操做系統能夠打開的最大文件數目
      # 其實質也就是根據主機的物理 CPU 和內存進行配置
      # 固然,理論上的併發總數可能會和實際有所誤差,由於主機還有其餘的工做進程須要消耗系統資源。
      # ulimit -SHn 65535
    }
    http {
      #設定 mime 類型,類型由 mime.type 文件定義
      include mime.types;
      default_type application/octet-stream;
      #設定日誌格式
      log_format main '$remote_addr - $remote_user [$time_local] "$request" '
      '$status $body_bytes_sent "$http_referer" '
      '"$http_user_agent" "$http_x_forwarded_for"';
      access_log logs/access.log main;
      #sendfile 指令指定 nginx 是否調用 sendfile 函數( zero copy 方式)來輸出文件,
      #對於普通應用,必須設爲 on,
      #若是用來進行下載等應用磁盤 IO 重負載應用,可設置爲 off,
      #以平衡磁盤與網絡 I/O 處理速度,下降系統的 uptime.
      sendfile on;
      #tcp_nopush on;
      #鏈接超時時間
      #keepalive_timeout 0;
      keepalive_timeout 65;
      tcp_nodelay on;

      #開啓 gzip 壓縮
      gzip on;
      gzip_disable "MSIE [1-6].";
      #nginx 傳輸文件大小,默認爲1M

      client_max_body_size 20m;
      client_header_buffer_size 32k;
      large_client_header_buffers 4 32k;

      #設定請求緩衝
      client_header_buffer_size 128k;
      large_client_header_buffers 4 128k;

     #設定虛擬主機配置
     server {
        #偵聽 80 端口
        listen 80;
        #定義使用 www.linuxidc.com 訪問
        server_name www.linuxidc.com;
        #定義服務器的默認網站根目錄位置
        root html;
        #設定本虛擬主機的訪問日誌
        access_log logs/nginx.access.log main;
        #默認請求
        location / {
          #定義首頁索引文件的名稱
          index index.php index.html index.htm;
        }
        # 定義錯誤提示頁面
        error_page 500 502 503 504 /50x.html;
        location = /50x.html {
        }

        #靜態文件, nginx 本身處理
        location ~ ^/(images|javascript|js|css|flash|media|static)/ {
          #過時 30 天,靜態文件不怎麼更新,過時能夠設大一點,
          #若是頻繁更新,則能夠設置得小一點。
          expires 30d;
        }
        #PHP 腳本請求所有轉發到 FastCGI 處理. 使用 FastCGI 默認配置.

        location ~ .php$ {
          fastcgi_pass 127.0.0.1:9000;
          fastcgi_index index.php;
          fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
          include fastcgi_params;
        }

        #禁止訪問 .htxxx 文件        location ~ /.ht {          deny all;        }      }    }

相關文章
相關標籤/搜索