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; } } }