安装参考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项目关闭