您的位置:首页 > 运维架构 > Nginx

Nginx 中间件

2019-04-11 19:46 274 查看

1、 简介

Nginx是一个http服务器,中间件。
相对于Apache的优点:
1)、高并发响应性能非常好,比较与Tomcat的500,Nginx可以达到50000;
2)、反向代理性能非常强;(可用于负载均衡
3)、内存和cpu占用率低;(是Apache的10%~20%)
4)、对后端服务有健康检查功能;
5)、配置代码简介且容易上手。

2、基本环境搭建

1)、打开我们的Linux虚拟机,基本的配置安装上。xshell连接上。(这里只针对nginx常见的开发场景的使用,需要排除其他影响的因素)
2)、测试网络是否连通 ping www.baidu.com (可以使用 Ctrl+z 退出)
3)、禁用防火墙
iptables -F:关闭
iptables -L:查看
4)、关闭安全系统
1、临时关闭(不用重启服务器) setenforce 0
2、修改配置文件(需要重启服务器)

  1. 修改/etc/selinux/config 文件
  2. 将SELINUX=enforcing改为SELINUX=disabled
  3. 重启机器即可
    4)、安装一定的支持与工具
    yum -y install gcc gcc-c++ autoconf pcre pcre-devel make automake //c语言库的编译工具
    yum -y install wget httpd-tools vim //wget:网络下载工具

3、nginx下载安装

先创建一个nginx的文件夹

[root@localhost ~]# cd /usr/local
[root@localhost local]# mikdr nginx
[root@localhost local]# cd nginx
  1. 下载安装包和nginx相关依赖包(命令)
    下载nginx :wget http://nginx.org/download/nginx-1.8.0.tar.gz
    下载openssl : wget http://www.openssl.org/source/openssl-fips-2.0.9.tar.gz
    下载zlib : wget http://zlib.net/zlib-1.2.11.tar.gz
    下载pcre : wget https://blog.csdn.net/m0_38048304/article/details/ftp:/ftp.csx.cam.ac.uk/pub/software/programming/pcre/pcre-8.38.tar.gz
  2. 编译安装(一步一步操作)
tar zxvf openssl-fips-2.0.9.tar.gz
cd openssl-fips-2.0.9
./config && make && make install

cd ..
tar zxvf pcre-8.38.tar.gz
cd pcre-8.38
./configure && make && make install

cd ..
tar zxvf zlib-1.2.11.tar.gz
cd zlib-1.2.11
./configure && make && make install

cd ..
#最后安装nginx
tar zxvf nginx-1.8.0.tar.gz
cd nginx-1.8.0
./configure && make && make install
  1. 启动nginx
cd /usr/local/nginx/sbin/
./nginx
ps -ef | grep nginx

4、nginx入门 实现反向代理

  1. nginx常用命令
    在sbin 目录下 通过 启动命令
    nginx -s stop # 快速关闭Nginx,可能不保存相关信息,并迅速终止web服务。
    nginx -s quit #平稳关闭Nginx,保存相关信息,有安排的结束web服务。
    nginx -s reload #因改变了Nginx相关配置,需要重新加载配置而重载。
    nginx -s reopen #重新打开日志文件。
    nginx -c filename #为 Nginx 指定一个配置文件,来代替缺省的。
    nginx -t #不运行,而仅仅测试配置文件。nginx 将检查配置文件的语法的正确性,并尝试打开配置文件中所引用到的文件。
    nginx -v #显示 nginx 的版本。
    nginx -V #显示 nginx 的版本,编译器版本和配置参数。
  2. Linux安装jdk与Tomcat
    创建目录 在usr/local/下 mkdir jdk;mkdir tomcat;
    安装jdk:
    rz文件:jdk-9.0.1_linux-x64_bin.tar.gz
    解压:tar –zxvf jdk-9.0.1_linux-x64_bin.tar.gz
    配置环境变量:进入vim /etc/profile
    添加:
JAVA_HOME=/usr/local/jdk/jdk-9.0.1
CLASSPATH=$JAVA_HOME/lib/
PATH=$PATH:$JAVA_HOME/bin
export PATH JAVA_HOME CLASSPATH

保存并退出
重新加载文件:source /etc/profile

安装Tomcat:

rz文件:apache-tomcat-9.0.4.tar.gz
解压:tar -zxvf apache-tomcat-9.0.4.tar.gz
改名:

启动:进入bin目录 执行 ./startup.sh
浏览器访问,测试是否成功。

  1. 配置单台Tomcat服务器反向代理
    1、进入nginx的配置文件目录:/usr/local/nginx/conf
    2、vim nginx.conf 添加修改文件:
#设置代理的服务器列表
upstream hellonginx{
server 127.0.0.1:8080;
}

server {
listen       80;
server_name  localhost;
server_name nginx.test.com;
charset utf-8;
#charset koi8-r;

#access_log  logs/host.access.log  main;
#反向代理路径
location / {
root   html;
index  index.html index.htm;
proxy_pass http://hellonginx;
}

3、重启nginx:在sbin下:./nginx -s reload
4、配置window的虚拟路径
在window/System32/drivers/etc/ 里面有个hosts添加:
192.168.1.121(虚拟机的IP) nginx.test.com
5、访问虚拟路径
流程是:
nginx.test.com 通过本机虚拟域名,映射到
192.168.1.121 访问某个ip地址默认就是80端口 所以进入了nginx
nginx监听到域名nginx.test.com 进入location的proxy_pass hellonginx
然后upstream代理的tomcat服务器名字也是hellonginx, 所以就被分发到了
Tomcat 127.0.0.1:8080

  1. 配置多台Tomcat实现负载均衡
    1、复制Tomcat1改名为Tomcat2:cp -r tomcat1 tomcat2
    2、修改三个端口号
    进入Tomcat2配置文件conf中修改server.xml
    3、启动两个Tomcat
    4、为了区分我们把Tomcat2 的猫去掉
    /usr/local/tomcat2/webapps/ROOT
    rm -rf tomcat.png
    5、重启Tomcat
    6、因为谷歌浏览器有缓存,可以用另一浏览器访问虚拟路径,可以看到猫时有时无。。

nginx负载均衡策略

  1. weight(权重)
    指定轮询几率,weight和访问比率成正比,用于后端服务器性能不均的情况
    如下所示,10.0.0.88的访问比率要比10.0.0.77的访问比率高一倍。
    upstream linuxidc{
    server 10.0.0.77 weight=5;
    server 10.0.0.88 weight=10;
    }
  2. ip_hash(访问ip)
    每个请求按访问ip的hash结果分配,这样每个访客固定访问一个后端服务器,可以解决session的问题。 upstream favresin{
    ip_hash;
    serv 4000 er 10.0.0.10:8080;
    server 10.0.0.11:8080; }
  3. fair(第三方)
    按后端服务器的响应时间来分配请求,响应时间短的优先分配。与weight分配策略类似。
    upstream favresin{
    server 10.0.0.10:8080;
    server 10.0.0.11:8080;
    fair;
    }
  4. url_hash(第三方)
    按访问url的hash结果来分配请求,使每个url定向到同一个后端服务器,后端服务器为缓存时比较有效。
    注意:在upstream中加入hash语句,server语句中不能写入weight等其他的参数,hash_method是使用的hash算法。
    upstream resinserver{
    server 10.0.0.10:7777;
    server 10.0.0.11:8888;
    hash $request_uri;
    hash_method crc32;
    }
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: