nginx笔记之一

前言

Nginx是一款轻量级的web服务器/反向代理服务器及电子邮件代理服务器,其特点是占有内存少,并发能力强可以反向代理和负载均衡等等,总之功能强大

linux下环境搭建

不多说,实践是检验真理的唯一标准。

1.上传文件到服务器(我用的是nginx-1.6.2.tar。gz)
2解压到特定文件下,tar -zxvf nginx-1.6.2.tar.gz -C /usr/local
3.下载需要的依赖库文件
安装gcc g++的依赖库
apt-get install build-essential
apt-get install libtool
安装 pcre依赖库
sudo apt-get update
sudo apt-get install libpcre3 libpcre3-dev
安装 zlib依赖库
apt-get install zlib1g-dev
安装 ssl依赖库
apt-get install openssl
4在解压后的nginx目录下进行configure配置 ./configure –prefix=/usr/local/nginx-1.13.0(此处如果报错,可能是缺少依赖库)
5编译与安装 make&&make install
6.启动nginx,在nignx目录下主要有四个文件
conf配置文件、html网页文件、logs日志文件、sbin主要二进制程序
启动命令:在sbin目录下 ./nginx
关闭命令 ./nginx -s stop 重启 ./nginx -s reload
7测试 输入你的服务器ip地址,如果出现欢迎页面表示安装成功

Alt text

nginx配置文件简单说明

基本上完玩nginx就是在玩配置,首先得先了解一下配置中的一些说明,主要在conf目录下的ngnx.conf里

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
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
#user nobody;
#开启进程数 <=CPU数 
worker_processes 1;
#错误日志保存位置
#error_log logs/error.log;
#error_log logs/error.log notice;
#error_log logs/error.log info;
#进程号保存文件
#pid logs/nginx.pid;
#每个进程最大连接数(最大连接=连接数x进程数)每个worker允许同时产生多少个链接,默认1024
events {
worker_connections 1024;
}
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 0;
#连接超时时间
keepalive_timeout 65;
#打开gzip压缩
#gzip on;
#设定请求缓冲
#client_header_buffer_size 1k;
#large_client_header_buffers 4 4k;
#设定负载均衡的服务器列表
#upstream myproject {
#weigth参数表示权值,权值越高被分配到的几率越大
#max_fails 当有#max_fails个请求失败,就表示后端的服务器不可用,默认为1,将其设置为0可以关闭检查
#fail_timeout 在以后的#fail_timeout时间内nginx不会再把请求发往已检查出标记为不可用的服务器
#}
#webapp
#upstream myapp {
# server 192.168.1.171:8080 weight=1 max_fails=2 fail_timeout=30s;
# server 192.168.1.172:8080 weight=1 max_fails=2 fail_timeout=30s;
#}
#配置虚拟主机,基于域名、ip和端口
server {
#监听端口
listen 80;
#监听域名
server_name localhost;
#charset koi8-r;
#nginx访问日志放在logs/host.access.log下,并且使用main格式(还可以自定义格式)
#access_log logs/host.access.log main;
#返回的相应文件地址
location / {
#设置客户端真实ip地址
#proxy_set_header X-real-ip $remote_addr;
#负载均衡反向代理
#proxy_pass http://myapp;
#返回根路径地址(相对路径:相对于/usr/local/nginx/)
root html;
#默认访问文件
index index.html index.htm;
}
#配置反向代理tomcat服务器:拦截.jsp结尾的请求转向到tomcat
#location ~ \.jsp$ {
# proxy_pass http://192.168.1.171:8080;
#}
#error_page 404 /404.html;
# redirect server error pages to the static page /50x.html
#
#错误页面及其返回地址
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
#虚拟主机配置:
server {
listen 1234;
server_name zwl.com;
location / {
root zwl.com;
index index.html;
}
#配置访问日志
access_log logs/zwl.com.access.log main;
}
}

日志配置

access_log logs/zwl.com.access.log main;
其中第二个是日志路径相对于conf的,可以自定义,第三个是日志格式与下面对应

#日志文件输出格式 这个位置相于全局设置
log_format main ‘$remote_addr - $remote_user [$time_local] “$request” ‘
‘$status $body_bytes_sent “$http_referer” ‘
‘“$http_user_agent” “$http_x_forwarded_for”‘;

反向代理

Alt text
通俗的讲就是我们访问代理服务器,然后代理服务器为我们选择访问哪台服务器
而正向代理就是我们访问另一台服务器,但是过程是通过访问另一台代理服务器,代理服务器访问目标服务器,然后把结果返回给源服务器
这里有一个问题,就是如果不设置的话,返还给tomcat的就是代理服务器的ip,所以需要设置

#设置客户端真实ip地址
proxy_set_header X-real-ip $remote_addr;
通过<%=request.getHeader(“X-real-ip”) %>得到真实服务器ip地址
简单的代理就是在location中通过关键字配置

location / {
     root   html;
     index  index.html index.htm;
 }

location /test {
proxy_pass http://111.230.246.xx:8080/libra/;
}

其中 location后面的配置可以使用正则表达式进行配置,这里含义是http://111.230.246.xx/与http://111.230.246.xx/test代理到不同的网址

负载均衡

通俗的讲就是访问量大了,分担给其它服务器。nginx的负载均衡也是配置一下

#设定负载均衡的服务器列表

#upstream myproject {
    #weigth参数表示权值,权值越高被分配到的几率越大
    #max_fails 当有#max_fails个请求失败,就表示后端的服务器不可用,默认为1,将其设置为0可以关闭检查
    #fail_timeout 在以后的#fail_timeout时间内nginx不会再把请求发往已检查出标记为不可用的服务器
#}    
#webapp
#upstream myapp {   
  # server 192.168.1.171:8080 weight=1 max_fails=2 fail_timeout=30s;   
# server 192.168.1.172:8080 weight=1 max_fails=2 fail_timeout=30s;   
#} 

其中第二参数是带负载的服务器,其他参数的策略不止这些,这里只是简单的策略

总结

nginx的功能远不止这些,它是一个高性能的服务器架设
对于高性能网站 ,请求量大,可以通过nginx的一下方法支撑
1动静分离,在nginx里建立一个静态资源站点
2: 利用浏览器缓存等,减少查询.
3.对于不可避免的请求—-服务器集群+负载均衡来支撑.

热评文章