Nginx的介绍
2019-05-23 本文已影响0人
伍陆柒_
什么是Nginx
1526187409033.pngNIO:not-blocking-io 非阻塞IO
BIO:blocking-IO 阻塞IO
nginx可以作为web服务器,但更多的时候,我们把它作为网关,因为它具备网关必备的功能:
- 反向代理
- 负载均衡
- 动态路由
- 请求过滤
nginx作为web服务器
Web服务器分2类:
- web应用服务器,如:
- tomcat
- resin
- jetty
- web服务器,如:
- Apache 服务器
- Nginx
- IIS
区分:web服务器不能解析jsp等页面,只能处理js、css、html等静态资源。
并发:web服务器的并发能力远高于web应用服务器。
Nginx + tomcat
nginx作为反向代理
什么是反向代理?
- 代理:通过客户机的配置,实现让一台服务器代理客户机,客户的所有请求都交给代理服务器处理。
- 反向代理:用一台服务器,代理真实服务器,用户访问时,不再是访问真实服务器,而是代理服务器。
nginx可以当做反向代理服务器来使用:
- 我们需要提前在nginx中配置好反向代理的规则,不同的请求,交给不同的真实服务器处理
- 当请求到达nginx,nginx会根据已经定义的规则进行请求的转发,从而实现路由功能!
利用反向代理,就可以解决我们前面所说的端口问题,如图
1526016663674.png安装和使用
下载:http://nginx.org/en/download.html
Windows直接下载解压即可使用
Linux
- 解压
tar -xvf nginx-1.15.12.tar.gz
unzip nginx-1.15.12.zip
- 配置
进入nginx目录
cd nginx-1.15.12
# 安装依赖包
yum -y install gcc gcc-c++ autoconf automake make
yum install pcre-devel
yum install zlib zlib-devel
yum install openssl openssl-devel
# 配置目录
./configure --prefix=/opt/nginx --sbin-path=/usr/bin/nginx
# 编译安装
su root
make && make install
这里指定安装的目录是在:/opt/nginx
目录下
- 启动
# 启动
nginx
ps -ef | grep nginx 查看进程
# 停止
nginx -s stop
# 重新加载
nginx -s reload
image.png
- 关闭防火墙,否则占用80端口
# 开机不启动,重启就关了
chkconfig iptables off
shutdown -r now
# 临时关闭
service iptables off
- 重启linux后,再次运行nginx,在浏览器地址栏输入linux ip地址,即可访问到linux欢迎页,说明启动成功
反向代理配置
找到/opt/nginx/的nginx.cof
1526188831504.png
nginx中的每个server就是一个反向代理配置,可以有多个server
完整配置:
user nobody;
worker_processes 1;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
gzip on;
server {
listen 80;
server_name manage.leyou.com;
proxy_set_header X-Forwarded-Host $host;
proxy_set_header X-Forwarded-Server $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
location / {
proxy_pass http://127.0.0.1:9001; # 此处ip如果是本机写本机ip,如果nginx配置虚拟机上,需要反向代理的服务不再虚拟机上,请填写服务所在电脑ip
proxy_connect_timeout 600;
proxy_read_timeout 600;
}
}
server {
listen 80;
server_name api.leyou.com;
proxy_set_header X-Forwarded-Host $host;
proxy_set_header X-Forwarded-Server $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
location / {
proxy_pass http://127.0.0.1:10010;
proxy_connect_timeout 600;
proxy_read_timeout 600;
}
}
}
重启nginx
nginx -s reload