安裝參考https://www.jianshu.com/p/bd74e10b469d/
安裝gcc g++的依賴庫
apt-get install build-essential
apt-get install libtool
安裝pcre依賴庫
apt-get update
apt-get install libpcre3 libpcre3-dev
安裝zlib依賴庫
// 注意lib後面是阿拉伯數字1,不是字母l
apt-get install zlib1g-dev
安裝ssl依賴庫
apt-get install openssl
安裝nginx
// 下載自己需要的版本
wget http://nginx.org/download/nginx-1.11.3.tar.gz
// 解壓
tar -zxvf nginx-1.11.3.tar.gz
// 進入nginx目錄
cd nginx-1.11.3
// 配置
./configure --prefix=/usr/local/nginx
// 編輯nginx
make
// 安裝nginx
make install
// 啓動nginx
/usr/local/nginx/sbin/nginx
// 查看nginx進程
ps -ef|grep nginx
// 停止nginx
/usr/local/nginx/sbin/nginx -s stop
// 查看nginx版本
/usr/local/nginx/sbin/nginx -v
nginx 相關命令 -s reload (重啓) -s 是平滑的操作的意思 除了啓動 重啓和停止最好帶上-s
start / -s stop 啓動/停止
現在介紹nginx重點部分nginx.conf,配置參數詳解 參考https://blog.csdn.net/wangbin_0729/article/details/82109693
#user nobody;
worker_processes 3; #nginx使用的進程數,一般1個就夠了,可以設置成和cpu數量一樣
#error_log logs/error.log;
#error_log logs/error.log notice;
#error_log logs/error.log info;
#pid logs/nginx.pid;
events {
worker_connections 1024;
}
#stream { #這個配置是用於轉發mysql的請求的,好像低版本nginx不支持
# upstream mysql {
# server 192.168.0.1:3306;;
# }
# server {
# listen 9966;
#
# # 請求拋給 stream_backend 組
# proxy_pass mysql;
# }
#}
#轉發http請求
http {
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 on; #開啓高效文件傳輸
#tcp_nopush on;
keepalive_timeout 65;
#gzip on;
upstream aaa{ #端口轉發
server 127.0.0.1:8080;
}
upstream bbb{
server 127.0.0.1:8081;
}
upstream ccc{
server 127.0.0.1:8082;
}
#aaa端口轉發
server {
listen 80;
server_name aaa.com;
access_log logs/aaa.log; #日誌文件
error_log logs/aaa.error;
#將所有請求轉發給demo_pool池的應用處理
location / {
proxy_set_header Host 127.0.0.1; #host 最好寫成和server_name一樣,
#不然如果頁面重定向會使用127.0.0.1做爲請求頭會訪問http://127.0.0.1/xxx,導致404
#proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://aaa; #轉發至上面配置好的upstream
tcp_nopush on;
tcp_nodelay on;
}
}
#bbb端口轉發
server {
listen 80;
server_name bbb.com;
server_name ddd.com;
access_log logs/bbb.log;
error_log logs/bbb.error;
#將所有請求轉發給demo_pool池的應用處理
location / {
proxy_set_header Host 127.0.0.1;
#proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://bbb;
tcp_nopush on;
tcp_nodelay on;
}
}
#ccc端口轉發
server {
listen 80;
server_name ccc.com;
access_log logs/ccc.log;
error_log logs/ccc.error;
#將所有請求轉發給demo_pool池的應用處理
location / {
proxy_set_header Host 127.0.0.1;
proxy_pass http://ccc;
}
}
#靜態資源映射
server {
listen 80;
server_name eee.com;
#access_log logs/eee.log#
#error_log logs/eee.error;
# 精細化 配置相關靜態資源參數,優化訪問靜態資源文件
location ~ .*\.(gif|jpg|jpeg|png)$ {
expires 24h;
root /usr/share/images;#指定圖片存放路徑
proxy_store on;
#proxy_temp_path D:/tools/nginx/2/image1/;#圖片訪問路徑
proxy_redirect off;
proxy_set_header Host 127.0.0.1;
client_max_body_size 10m;
client_body_buffer_size 1280k;
proxy_connect_timeout 900;
proxy_send_timeout 900;
proxy_read_timeout 900;
proxy_buffer_size 40k;
proxy_buffers 40 320k;
proxy_busy_buffers_size 640k;
proxy_temp_file_write_size 640k;
#if ( !-e $request_filename)
# {
# proxy_pass http://127.0.0.1;#默認80端口
# }
}
}
# another virtual host using mix of IP-, name-, and port-based configuration
#
#server {
# listen 8000;
# listen somename:8080;
# server_name somename alias another.alias;
# location / {
# root html;
# index index.html index.htm;
# }
#}
# HTTPS server
#
#server {
# listen 443 ssl;
# server_name localhost;
# ssl_certificate cert.pem;
# ssl_certificate_key cert.key;
# ssl_session_cache shared:SSL:1m;
# ssl_session_timeout 5m;
# ssl_ciphers HIGH:!aNULL:!MD5;
# ssl_prefer_server_ciphers on;
# location / {
# root html;
# index index.html index.htm;
# }
#}
}
nginx功能強大,併發高達50000,相對apache使用更少的資源。NGINX的高效性還表現在可以不停機的更新項目,如上面配置所示 aaa.com域名指向8080端口,現在需要更新8080項目,只需要重開一個更新的項目如端口8088,然後將nginx.conf中的配置端口轉指向改變再使用 nginx -s reload就可以實現平滑過渡。待穩定後可以將原8080項目關閉