1、 編譯安裝nginx
下載nginx安裝包
wget http://nginx.org/download/nginx-1.8.0.tar.gz
也能夠選擇其餘版本,官網:http://nginx.org/en/download.html
解壓
tar -zxvf nginx-1.8.0.tar.gz
javascript
進入解壓後的nginx目錄
cd nginx-1.8.0
安裝依賴軟件包
yum install -y pcre pcre-devel openssl openssl-devel gcc gcc gcc-c++ ncurses-devel perl
php
建立用戶
#添加www用戶,其中-M參數表示不添加用戶家目錄,-s參數表示指定shell類型 css
useradd www -M -s /sbin/nologinhtml
6.配置java
./configure --prefix=/usr/local/nginx --user=www --group=www --with-http_stub_status_module --with-http_ssl_modulenode
若有報錯根據報錯信息安裝相關的依賴軟件。
7.編譯linux
make
若是權限不夠,須要用sudo去執行
sudo make
以下字樣,表示編譯成功:nginx
10.編譯安裝c++
make install
若是權限不夠,須要用sudo去執行
sudo make installweb
安裝完成後
2、 nginx啓動
1.查看安裝目錄:
cd /usr/local/nginx
conf : 存放配置文件
html: 網頁文件
logs:存放日誌
sbin:shell啓動,中止腳本
nginx是一個功能很是強大的web服務器加反向代理服務器,同時又是郵件服務器等等
在項目使用中,使用最多的三個核心功能是反向代理、負載均衡和靜態服務器
這三個不一樣的功能的使用,都跟nginx的配置密切相關,nginx服務器的配置信息主要集中在nginx.conf這個配置文件中,而且全部的可配置選項大體分爲如下幾個部分
main # 全局配置
events { # nginx工做模式配置
....
}
http { # http設置
....
server { # 服務器主機配置
....
location { # 路由配置
....
}
upstream name { # 負載均衡配置
....
}
}
如上述配置文件所示,主要由6個部分組成:
main:用於進行nginx全局信息的配置
events:用於nginx工做模式的配置
http:用於進行http協議信息的一些配置
server:用於進行服務器訪問信息的配置
location:用於進行訪問路由的配置
upstream:用於進行負載均衡的配置
main模塊
觀察下面的配置代碼
#user nobody nobody;
worker_processes 2;
#error_log logs/error.log
#error_log logs/error.log notice
#error_log logs/error.log info
#pid logs/nginx.pid
worker_rlimit_nofile 1024;
上述配置都是存放在main全局配置模塊中的配置項
user用來指定nginx worker進程運行用戶以及用戶組,默認nobody帳號運行
worker_processes指定nginx要開啓的子進程數量,運行過程當中監控每一個進程消耗內存(通常幾M~幾十M不等)根據實際狀況進行調整,一般數量是CPU內核數量的整數倍
error_log定義錯誤日誌文件的位置及輸出級別【debug / info / notice / warn / error / crit】
pid用來指定進程id的存儲文件的位置
worker_rlimit_nofile用於指定一個進程能夠打開最多文件數量的描述
event 模塊
event {
worker_connections 1024;
multi_accept on;
use epoll;
}
上述配置是針對nginx服務器的工做模式的一些操做配置
worker_connections 指定最大能夠同時接收的鏈接數量,這裏必定要注意,最大鏈接數量是和worker processes共同決定的。
multi_accept 配置指定nginx在收到一個新鏈接通知後儘量多的接受更多的鏈接
use epoll 配置指定了線程輪詢的方法,若是是linux2.6+,使用epoll,若是是BSD如Mac請使用Kqueue
http模塊
做爲web服務器,http模塊是nginx最核心的一個模塊,配置項也是比較多的,項目中會設置到不少的實際業務場景,須要根據硬件信息進行適當的配置,常規狀況下,使用默認配置便可!
http {
##
# 基礎配置
##
sendfile on;
tcp_nopush on;
tcp_nodelay on;
keepalive_timeout 65;
types_hash_max_size 2048;
# server_tokens off;
# server_names_hash_bucket_size 64;
# server_name_in_redirect off;
include /etc/nginx/mime.types;
default_type application/octet-stream;
##
# SSL證書配置
##
ssl_protocols TLSv1 TLSv1.1 TLSv1.2; # Dropping SSLv3, ref: POODLE
ssl_prefer_server_ciphers on;
##
# 日誌配置
##
access_log /var/log/nginx/access.log;
error_log /var/log/nginx/error.log;
##
# Gzip 壓縮配置
##
gzip on;
gzip_disable "msie6";
# gzip_vary on;
# gzip_proxied any;
# gzip_comp_level 6;
# gzip_buffers 16 8k;
# gzip_http_version 1.1;
# gzip_types text/plain text/css application/json application/javascript
text/xml application/xml application/xml+rss text/javascript;
##
# 虛擬主機配置
##
include /etc/nginx/conf.d/*.conf;
include /etc/nginx/sites-enabled/*;
1) 基礎配置
sendfile on:配置on讓sendfile發揮做用,將文件的回寫過程交給數據緩衝去去完成,而不是放在應用中完成,這樣的話在性能提高有好處
tc_nopush on:讓nginx在一個數據包中發送全部的頭文件,而不是一個一個單獨發
tcp_nodelay on:讓nginx不要緩存數據,而是一段一段發送,若是數據的傳輸有實時性的要求的話能夠配置它,發送完一小段數據就馬上能獲得返回值,可是不要濫用哦
keepalive_timeout 10:給客戶端分配鏈接超時時間,服務器會在這個時間事後關閉鏈接。通常設置時間較短,可讓nginx工做持續性更好
client_header_timeout 10:設置請求頭的超時時間
client_body_timeout 10:設置請求體的超時時間
send_timeout 10:指定客戶端響應超時時間,若是客戶端兩次操做間隔超過這個時間,服務器就會關閉這個連接
limit_conn_zone $binary_remote_addr zone=addr:5m :設置用於保存各類key的共享內存的參數,
limit_conn addr 100: 給定的key設置最大鏈接數
server_tokens:雖然不會讓nginx執行速度更快,可是能夠在錯誤頁面關閉nginx版本提示,對於網站安全性的提高有好處哦
include /etc/nginx/mime.types:指定在當前文件中包含另外一個文件的指令
default_type application/octet-stream:指定默認處理的文件類型能夠是二進制
type_hash_max_size 2048:混淆數據,影響三列衝突率,值越大消耗內存越多,散列key衝突率會下降,檢索速度更快;值越小key,佔用內存較少,衝突率越高,檢索速度變慢
2) 日誌配置
access_log logs/access.log:設置存儲訪問記錄的日誌
error_log logs/error.log:設置存儲記錄錯誤發生的日誌
3) SSL證書加密
ssl_protocols:指令用於啓動特定的加密協議,nginx在1.1.13和1.0.12版本後默認是ssl_protocols SSLv3 TLSv1 TLSv1.1 TLSv1.2,TLSv1.1與TLSv1.2要確保OpenSSL >= 1.0.1 ,SSLv3 如今還有不少地方在用但有很多被*的漏洞。
ssl prefer server ciphers**:設置協商加密算法時,優先使用咱們服務端的加密套件,而不是客戶端瀏覽器的加密套件
4) 壓縮配置
gzip 是告訴nginx採用gzip壓縮的形式發送數據。這將會減小咱們發送的數據量。
gzip_disable 爲指定的客戶端禁用gzip功能。咱們設置成IE6或者更低版本以使咱們的方案可以普遍兼容。
gzip_static 告訴nginx在壓縮資源以前,先查找是否有預先gzip處理過的資源。這要求你預先壓縮你的文件(在這個例子中被註釋掉了),從而容許你使用最高壓縮比,這樣nginx就不用再壓縮這些文件了(想要更詳盡的gzip_static的信息,請點擊這裏)。
gzip_proxied 容許或者禁止壓縮基於請求和響應的響應流。咱們設置爲any,意味着將會壓縮全部的請求。
gzip_min_length 設置對數據啓用壓縮的最少字節數。若是一個請求小於1000字節,咱們最好不要壓縮它,由於壓縮這些小的數據會下降處理此請求的全部進程的速度。
gzip_comp_level 設置數據的壓縮等級。這個等級能夠是1-9之間的任意數值,9是最慢可是壓縮比最大的。咱們設置爲4,這是一個比較折中的設置。
gzip_type 設置須要壓縮的數據格式。上面例子中已經有一些了,你也能夠再添加更多的格式。
5) 文件緩存配置
open_file_cache 打開緩存的同時也指定了緩存最大數目,以及緩存的時間。咱們能夠設置一個相對高的最大時間,這樣咱們能夠在它們不活動超過20秒後清除掉。
open_file_cache_valid 在open_file_cache中指定檢測正確信息的間隔時間。
open_file_cache_min_uses 定義了open_file_cache中指令參數不活動時間期間裏最小的文件數。
open_file_cache_errors 指定了當搜索一個文件時是否緩存錯誤信息,也包括再次給配置中添加文件。咱們也包括了服務器模塊,這些是在不一樣文件中定義的。若是你的服務器模塊不在這些位置,你就得修改這一行來指定正確的位置。
server模塊
srever模塊配置是http模塊中的一個子模塊,用來定義一個虛擬訪問主機,也就是一個虛擬服務器的配置信息
server {
listen 80;
server_name localhost 192.168.1.100;
root /var/www/html;
index index.php index.html index.html;
charset utf-8;
access_log logs/access.log;
error_log logs/error.log;
......
}
核心配置信息以下:
server:一個虛擬主機的配置,一個http中能夠配置多個server
server_name:用力啊指定ip地址或者域名,多個配置之間用空格分隔
root:表示整個server虛擬主機內的根目錄,全部當前主機中web項目的根目錄
index:用戶訪問web網站時的全局首頁
charset:用於設置www/路徑中配置的網頁的默認編碼格式
access_log:用於指定該虛擬主機服務器中的訪問記錄日誌存放路徑
error_log:用於指定該虛擬主機服務器中訪問錯誤日誌的存放路徑
location模塊
location模塊是nginx配置中出現最多的一個配置,主要用於配置路由訪問信息
在路由訪問信息配置中關聯到反向代理、負載均衡等等各項功能,因此location模塊也是一個很是重要的配置模塊
基本配置
location / {
root /nginx/www;
index index.php index.html index.htm;
}
location /:表示匹配訪問根目錄
root:用於指定訪問根目錄時,訪問虛擬主機的web目錄
index:在不指定訪問具體資源時,默認展現的資源文件列表
反向代理配置方式
經過反向代理代理服務器訪問模式,經過proxy_set配置讓客戶端訪問透明化
location / {
proxy_pass http://localhost:8888;
proxy_set_header X-real-ip $remote_addr;
proxy_set_header Host $http_host;
}
uwsgi配置
wsgi模式下的服務器配置訪問方式
location / {
include uwsgi_params;
uwsgi_pass localhost:8888
}
upstream模塊
upstream模塊主要負責負載均衡的配置,經過默認的輪詢調度方式來分發請求到後端服務器
簡單的配置方式以下
upstream name {
ip_hash;
server 10.5.10.119:8000;
server 10.5.10.119:8001 down;
server 10.5.10.119:8002 max_fails=3;
server 10.5.10.119:8003 fail_timeout=20s;
server 10.5.10.119:8004 max_fails=3 fail_timeout=20s;
}
核心配置信息以下
ip_hash:指定請求調度算法,默認是weight權重輪詢調度,能夠指定
server host:port:分發服務器的列表配置
-- down:表示該主機暫停服務
-- max_fails:表示失敗最大次數,超過失敗最大次數暫停服務
-- fail_timeout:表示若是請求受理失敗,暫停指定的時間以後從新發起請求
2.檢查nginx.conf文件
cd /usr/local/nginx/sbin
./nginx -t #查看nginx.conf文件是否有語法錯誤
出現以下字樣,表示nginx.conf沒有語法錯誤,配置成功
3.啓動nginx
cd /usr/local/nginx/sbin
查看進程:
備註:這裏啓動的服務進程實際上是4個進程,由於nginx進程在啓動的時候,會附帶一個守護進程,用於保護正式進程不被異常終止;若是守護進程一旦返現nginx繼承被終止了,會自動重啓該進程。
守護進程通常會稱爲master進程,業務進程被稱爲worker進程
常見問題:
解決nginx:[emerg] bind() to 0.0.0.0:80 failed (98: Address already in use)錯誤:
錯誤緣由:不能綁定80端口,80端口已經被佔用。
nginx: [error] invalid PID number "" in "/usr/local/nginx/logs/nginx.pid"
解決方法:
/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf
ps -ef | grep nginx #查看進程
4.中止nginx,從新加載配置文件
執行命令:kill –INT進程號
啓動成功
5.訪問站點
nginx命令
方法(1)進入nginx的sbin目錄
cd /usr/local/nginx/sbin
./nginx 啓動Nginx
./nginx -s reload 重啓Nginx
./nginx -s stop 中止Nginx
方法(2)建立軟鏈接:
ln -s /usr/local/nginx/sbin/nginx /usr/local/sbin/
nginx ##啓動Nginx
nginx -s reload ## 從新載入配置文件
nginx -s reopen ## 重啓 Nginx
nginx -s stop # #中止 Nginx
————————————————原文連接:https://blog.csdn.net/wangerrong/article/details/102711532