Nginx安装及分流多个web服务
Ngnix安装及常用配置
一、安装Nginx
1.检查依赖
yum install gcc-c++
yum install -y pcre pcre-devel
yum install -y zlib zlib-devel
2.下载
(官网下载地址https://nginx.org/en/download.html)
wget https://nginx.org/download/nginx-1.8.1.tar.gz
3.安装
tar -zxvf nginx-1.8.1.tar.gz
cd nginx-1.8.1
./configure
make && make install
启动
/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf
二、进行配置
修改完nginx.conf后,如果启动报错,执行 nginx -t 进行查看配置文件是否有问题
1.配置
安装完nginx后,修改相应的nginx.conf文件
sudo vi /usr/local/nginx/conf/nginx.conf
修改为:
user www-data;
worker_processes auto;
pid /run/nginx.pid;
events {
worker_connections 1024; #单个后台进程的最大并发链接数
}
http {
#设置访问的web应用列表
upstream VideoSecuritySystem{
server 192.168.0.156:8080; #!!!!!!!!!!!!!!修改为自己的路径
}
upstream one{
server 192.168.0.156:8080; #!!!!!!!!!!!!!!!修改为自己的路径
}
upstream two{
server 192.168.0.156:8081; #!!!!!!!!!!!!!!!修改为自己的路径
}
#HTTP服务器
server {
listen 80;
server_name 192.168.0.156;#!!!!!!修改!!!!可以是域名,前提是tomcat配置过,否则无法获取请求
index index.jsp
root /home/chx/allSoftCert/apache-tomcat-8.5.38/webapps/VideoSecuritySystem; #!!!!!!!修改为自己设置的根目录
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;
location / {
proxy_pass http://VideoSecuritySystem; #默认的展示服务
}
location /one/{
proxy_pass http://one; #!!!!!!!!!!修改为自己的upstream
}
location /two/ {
proxy_pass http://two; #!!!!!!!!!!修改为自己的upstream
}
}
}
2.验证
linux下放置了两份tomcat,一个端口8080,一个端口8081,通过nginx反向代理,不用输入端口号进行访问。
三、额外补充篇:
如果需要支持rtmp,进行如下配置:
./configure --add-module=/home/soft/nginx-rtmp-module-master --with-http_ssl_module
如果提示缺少openssl library ,执行
yum install openssl openssl-devel -y
make && make install
然后创建文件
mkdir /home/soft/video
在 /usr/local/nginx/conf/nginx.conf里加入
rtmp {
server {
listen 11111;
chunk_size 4000;
application video {
live on;
max_connections 1024;
}
application hls {
live on;
hls on;
hls_path /home/soft/video/hls;
hls_fragment 10s;
}
}
}
在server里加入
location /hls {
types{
application/vnd.apple.mpegurl m3u8;
video/mp2t ts;
}
root /home/soft/video;
add_header Cache-Control no-cache;
add_header Access-Control-Allow-Origin *;
}
四、知识总结
简介:Nginx同Apache一样都是一种WEB服务器,Apache对于高并发高访问的支持并不是很好,Nginx是一款用c语言编写的可支持百万级别TCP连接的服务器。
作用:
1.HTTP服务器和反向代理服务器。
2.同时也是一个IMAP、POP3、SMTP代理服务器。
3.Nginx可以作为一个HTTP服务器进行网站的发布处理,另外Nginx可以作为反向代理进行负载均衡的实现。
原理:
正向代理(不明确是哪个客户端进行访问):
正向代理最大的特点是客户端非常明确要访问的服务器地址,用户通过访问代理服务器访问国外网站,服务器只清楚请求来自哪个代理服务器,而不清楚来自哪个具体的客户端。
正向代理模式屏蔽或者隐藏了真实客户端信息。
反向代理(不明确是哪台服务器进行处理):多个客户端给服务器发送的请求,Nginx服务器接收到之后,按照一定的规则分发给了后端的业务处理服务器进行处理。
请求的来源是明确的,但是请求具体由哪台服务器处理的并不明确了,Nginx扮演的就是一个反向代理角色。
使用:
Ngnix + Tomcat + Java
五、配置讲解
1.nginx每个location都是一个匹配目录,nginx的策略是:访问请求来时,会对访问地址进行解析,从上到下逐个匹配,匹配上就执行对应location大括号中的策略,并根据策略对请求作出相应。
如访问地址https://i.cnblogs.com/posts/edit;postId=11113700
那访问时就会匹配这个location,从而把请求代理转发到本机的8080Tomcat服务中,Tomcat相应后,信息原路返回。
location /posts/ {
proxy_connect_timeout 18000; ##修改成半个小时
proxy_send_timeout 18000;
proxy_read_timeout 18000;
proxy_pass http://127.0.0.1:8080;
}
总结:location如果没有“/”时,请求就可以模糊匹配以字符串开头的所有字符串,而有“/”时,只能精确匹配字符本身
location目录后加"/",只能匹配目录,不加“/”不仅可以匹配目录还对目录进行模糊匹配。而proxy_pass无论加不加“/”,代理跳转地址都直接拼接。
举例:
location /posts/ {
proxy_pass http://127.0.0.1:8080/sun;
}
请求被代理跳转到:http://127.0.0.1:8080/sunindex.html