首页 > 技术文章 > Nginx安装及分流多个web服务

chxwkx 2019-07-01 14:07 原文

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

 

推荐阅读