java - nginx基础
一、nginx简介及作用
1.nginx简介:
是一个高性能的HTTP(可以作为静态页面的web服务器)和反向代理服务器。
2.nginx特点:
占有内存少,并发能力强。
3.nginx主要作用:
a. 正向代理
例:A服务器到C服务器网络不通,B服务器到C服务器网络通,可以通过A访问B,由B做ng代理,代理访问到服务器C。
b.反向代理
例:服务器通过反向代理生成一个代理服务器,客户端可以通过代理服务器访问,但此时向客户端暴露的是代理服务器地址,从而隐藏保护真实的服务器地址。
c.负载均衡(upstream)
例:高并发时,采用集群,将请求按需分配的集群中的各个服务器上,以实现负载均衡。
d. 动静分离
例:将动态资源和静态资源由不同的服务器来解析,加快解析速度,缓解服务器压力。
e.防火墙
例:设置访问防火墙并设置白名单,确保服务器安全性
二、nginx常用命令
1.启动命令
./nginx
2.关闭命令
./nginx -s stop
3.重新加载命令
./nginx -s reload
4.查看版本
./nginx -v
5.查看进程
ps -ef|grep nginx
三、nginx配置文件(.../nginx/conf/nginx.conf)
# work数量,worker_processes值越大,可以支持的并发处理量也越多,建议和cpu数一致
worker_processes 1;
#error_log path(存放路径) level(日志等级)
error_log logs/error.log info;
events {
# 每个work下支持的最大连接数
worker_connections 1024;
}
http {
# 引入 MIME 类型配置文件(mime.types,通常在 Nginx 安装目录的conf文件夹下),用于告诉浏览器响应内容的类型
include mime.types;
# 定义默认的 MIME 类型(当MIME文件找不到时的默认类型)
default_type application/octet-stream;
# 日志,logs/host.access.log是存放路径,main是日志格式
access_log logs/host.access.log main;
# 启用sendfile机制(内核级文件传输),提升静态文件传输效率
sendfile on;
# 定义 HTTP 长连接(Keep-Alive)的超时时间(单位:秒)
keepalive_timeout 65;
server {
# 端口号
listen 80;
# 定义的域名
server_name localhost;
location / {
# 根目录,例如,请求http://localhost/index.html时,Nginx 会去html文件夹下寻找index.html文件。
root html;
# 定义索引文件,例如,请求http://localhost/时,会优先查找html目录下的index.html,若不存在则查找index.htm。
index index.html index.htm;
}
# 指定错误状态码跳转的页面
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
}
四、反向代理示例
用192.168.111.111反向代理真实IP127.0.0.0,使用户访问http://192.168.111.111:7000/a/跳转到http://127.0.0.0:1000;用户访问http://192.168.111.111:7000/b/跳转到http://127.0.0.0:2000
server {
listen 7000;
server_name 192.168.111.111;
location /a/ {
proxy_pass http://127.0.0.0:1000;
}
location /b/ {
proxy_pass http://127.0.0.0:2000;
}
}
五、负载均衡
示例:访问192.168.222.222.9000时,会将所有的请求在集群中进行分配
worker_processes 1;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
access_log logs/host.access.log main;
sendfile on;
keepalive_timeout 65;
upstream myserver{
server 192.168.111.111:8080;
server 192.168.111.111:8081;
}
server {
listen 9000;
server_name 192.168.222.222;
location / {
root html;
proxy_pass http://myserver;
index index.html index.htm;
}
}
}

负载均衡分配服务器策略
1.轮询(默认)
10个请求分配给ABC服务器,A(1,4,7,10)B(2,5,7)C(3,6,9)
2.weight(权重分配法)
upstream server_pool{
server 192.168.111.21 weight=1;
server 192.168.111.22 weight=2;
server 192.168.111.23 weight=3;
}
10个请求分配给ABC服务器,A(1,7)B(2,3,8,9)C(4,5,6,10)
3.ip_hash
upstream server_pool{
ip_hash;
server 192.168.111.21:80;
server 192.168.111.22:80;
}
请求根据hash结果分配服务器,请求1第一次是192.168.111.21:80执行,后边都是192.168.111.21:80执行。可以解决session的跨域问题。
六、动静分离
server {
listen 8080;
server_name 192.168.111.111;
location /image/ {
root /data/;
autoindex on;
}
location /www/ {
root /data/;
autoindex on;
index index.html index.htm;
}
}
因为配置autoindex on,所以访问http://192.168.111.111:8080/image/会显示静态文件目录
更多推荐



所有评论(0)