Nginx静态服务器软件

原创 2020-05-14 11:59

在博客部署到阿里云遇到了一些小错误,因此决定仔细了解一下Nginx

一、Nginx简介

百度百科:
Nginx (engine x) 是一个高性能的HTTP和反向代理web服务器,同时也提供了IMAP/POP3/SMTP服务.其特点是占有内存少,并发能力强,事实上nginx的并发能力在同类型的网页服务器中表现较好,中国大陆使用nginx网站用户有:百度、京东、新浪、网易、腾讯、淘宝等。

二、Nginx的三大概念

(一)、反向代理

1、正向代理
Nginx不仅可以做反项代理实现,负载均衡,还可以用作正向代理来进行上网等功能.
我们都知道Google浏览器在国内访问受限问题,使用谷歌的小伙伴都用过访问助手吧,它其实就是一种正向代理!用户先访问代理服务器,通过代理服务器进行访问!我没也可以通过给浏览器配置代理服务区的形式进行访问,道理是一样的.

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

(二)、负载均衡

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

(三)、动静分离

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

三、Nginx的特点

  1. 热部署:nginx在修改配置文件之后,是不需要重启的,它进行的是重载,重载要比重起的速度快!
  2. 可以高并发连接:相同配置的服务器,nginx比apache能接受的连接要多很多。
  3. 内存消耗低:相同的服务器,nginx比apache的消耗要低
  4. 处理响应请求快:nginx处理静态文件的时候,响应速度很快。
  5. 居于很高的可靠性

四、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
//下载tar包
wget http://nginx.org/download/nginx-1.13.7.tar.gz
tar -xvf nginx-1.13.7.tar.gz

3.安装nginx

1
2
3
4
5
6
7
8
9
10
//进入nginx目录
cd /usr/local/nginx
//进入目录
cd nginx-1.13.7
//执行命令
./configure
//执行make命令
make
//执行make install命令
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               #这是Nginx所有配置文件的目录,极其重要
| |-- fastcgi.conf            #fastcgi相关参数的配置文件
| |-- fastcgi.conf.default            #fastcgi.conf的原始备份
| |-- fastcgi_params          #fastcgi的参数文件
| |-- fastcgi_params.default
| |-- koi-utf
| |-- koi-win
| |-- mime.types             #媒体类型,
| |-- mime.types.default
| |-- nginx.conf              #这是Nginx默认的主配置文件
| |-- nginx.conf.default
| |-- scgi_params             #scgi相关参数文件,一般用不到
| |-- scgi_params.default
| |-- uwsgi_params        #uwsgi相关参数文件,一般用不到
| |-- uwsgi_params.default
| `-- win-utf
|-- fastcgi_temp         #fastcgi临时数据目录
|-- html                   #这是编译安装时Nginx的默认站点目录,类似
Apache的默认站点htdocs目录
| |--50x.html # 错误页面优雅替代显示文件,例如:出现502错误时会调用此页面
# error_page 500502503504 /50x.html;
| `-- index.html # 默认的首页文件,首页文件名字是在nginx.conf中事先定义好的。
|-- logs #这是Nginx默认的日志路径,包括错误日志及访问日志
| |-- access.log # 这是Nginx的默认访问日志文件,使用tail -f access.log,可以实时观看网站用户访问情况信息
| |-- error.log # 这是Nginx的错误日志文件,如果Nginx出现启动故障等问题,一定要看看这个错误日志
| `-- nginx.pid # Nginx的pid文件,Nginx进程启动后,会把所有进程的ID号写到此文件
|-- proxy_temp #临时目录
|-- sbin #这是Nginx命令的目录,如Nginx的启动命令nginx
| `-- nginx #Nginx的启动命令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://zp_server1;
}

#静态文件,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;
#}
}

评论

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×