在博客部署到阿里云遇到了一些小错误,因此决定仔细了解一下Nginx
一、Nginx简介
百度百科:
Nginx (engine x) 是一个高性能的HTTP和反向代理web服务器,同时也提供了IMAP/POP3/SMTP服务.其特点是占有内存少,并发能力强,事实上nginx的并发能力在同类型的网页服务器中表现较好,中国大陆使用nginx网站用户有:百度、京东、新浪、网易、腾讯、淘宝等。
二、Nginx的三大概念
(一)、反向代理
1、正向代理
Nginx不仅可以做反项代理实现,负载均衡,还可以用作正向代理来进行上网等功能.
我们都知道Google浏览器在国内访问受限问题,使用谷歌的小伙伴都用过访问助手吧,它其实就是一种正向代理!用户先访问代理服务器,通过代理服务器进行访问!我没也可以通过给浏览器配置代理服务区的形式进行访问,道理是一样的.

2、反向代理
反向代理,其实客户端对代理是无感知的,因为客户端不需要任何配置就可以访问,我们只 需要将请求发送到反向代理服务器,由反向代理服务器去选择目标服务器获取数据后,在返 回给客户端,此时反向代理服务器和目标服务器对外就是一个服务器,暴露的是代理服务器 地址,隐藏了真实服务器 IP 地址。

(二)、负载均衡
增加服务器的数量,然后将请求分发到各个服务器上,将原先请求集中到单个服务器上的
情况改为将请求分发到多个服务器上,将负载分发到不同的服务器,也就是我们所说的负
载均衡

(三)、动静分离
为了加快网站的解析速度,可以把动态页面和静态页面由不同的服务器来解析,加快解析速
度。降低原来单个服务器的压力。

三、Nginx的特点
- 热部署:nginx在修改配置文件之后,是不需要重启的,它进行的是重载,重载要比重起的速度快!
- 可以高并发连接:相同配置的服务器,nginx比apache能接受的连接要多很多。
- 内存消耗低:相同的服务器,nginx比apache的消耗要低
- 处理响应请求快:nginx处理静态文件的时候,响应速度很快。
- 居于很高的可靠性
四、Linux系统下安装Nginx
1、安装所需依赖包
1
| yum -y install gcc zlib zlib-devel pcre-devel openssl openssl-devel
|
这行命令实际安装了4个所需依赖包
2、下载并解压安装包
1 2 3 4 5 6 7
| cd /usr/local mkdir nginx cd nginx
wget http: tar -xvf nginx-1.13.7.tar.gz
|
3.安装nginx
1 2 3 4 5 6 7 8 9 10
| cd /usr/local/nginx
cd nginx-1.13.7
./configure
make
make install
|
4.Nginx的目录结构
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35
| [root@www ~]# tree /application/nginx/ /application/nginx/ |-- client_body_temp |-- conf | |-- fastcgi.conf | |-- fastcgi.conf.default | |-- fastcgi_params | |-- fastcgi_params.default | |-- koi-utf | |-- koi-win | |-- mime.types | |-- mime.types.default | |-- nginx.conf | |-- nginx.conf.default | |-- scgi_params | |-- scgi_params.default | |-- uwsgi_params | |-- uwsgi_params.default | `-- win-utf |-- fastcgi_temp |-- html Apache的默认站点htdocs目录 | |--50x.html | `-- index.html |-- logs | |-- access.log | |-- error.log | `-- nginx.pid |-- proxy_temp |-- sbin | `-- nginx |-- scgi_temp `-- uwsgi_temp 9 directories,21 files
|
5.Nginx配置文件
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80
| #设定日志 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 D:/Tools/nginx-1.10.1/logs/access.log main; rewrite_log on;
#sendfile 指令指定 nginx 是否调用 sendfile 函数(zero copy 方式)来输出文件,对于普通应用, #必须设为 on,如果用来进行下载等应用磁盘IO重负载应用,可设置为 off,以平衡磁盘与网络I/O处理速度,降低系统的uptime. sendfile on; #tcp_nopush on;
#连接超时时间 keepalive_timeout 120; tcp_nodelay on;
#gzip压缩开关 #gzip on;
#设定实际的服务器列表 upstream zp_server1{ server 127.0.0.1:8089; } #HTTP服务器 server { #监听80端口,80端口是知名端口号,用于HTTP协议 listen 80;
#定义使用www.xx.com访问 server_name www.helloworld.com;
#首页 index index.html
#指向webapp的目录 root D:\01_Workspace\Project\github\zp\SpringNotes\spring-security\spring-shiro\src\main\webapp;
#编码格式 charset utf-8;
#代理配置参数 proxy_connect_timeout 180; proxy_send_timeout 180; proxy_read_timeout 180; proxy_set_header Host $host; proxy_set_header X-Forwarder-For $remote_addr;
#反向代理的路径(和upstream绑定),location 后面设置映射的路径 location / { proxy_pass http: }
#静态文件,nginx自己处理 location ~ ^/(images|javascript|js|css|flash|media|static)/ { root D:\01_Workspace\Project\github\zp\SpringNotes\spring-security\spring-shiro\src\main\webapp\views; #过期30天,静态文件不怎么更新,过期可以设大一点,如果频繁更新,则可以设置得小一点。 expires 30d; }
#设定查看Nginx状态的地址 location /NginxStatus { stub_status on; access_log on; auth_basic "NginxStatus"; auth_basic_user_file conf/htpasswd; }
#禁止访问 .htxxx 文件 location ~ /\.ht { deny all; }
#错误处理页面(可选择性配置) #error_page 404 /404.html; #error_page 500 502 503 504 /50x.html; #location = /50x.html { # root html; #} }
|