Linux环境下Nginx的安装、反向代理、负载均衡

1 什么是Nginx

Nginx是一款高性能的http 服务器/反向代理服务器电子邮件(IMAP/POP3)代理服务器。由俄罗斯的程序设计师Igor Sysoev所开发,官方测试nginx能够支支撑5万并发链接,并且cpu、内存等资源消耗却非常低,运行非常稳定。

2 应用场景

  1. http服务器。Nginx是一个http服务可以独立提供http服务。可以做网页静态服务器。
  2. 虚拟主机。可以实现在一台服务器虚拟出多个网站。例如个人网站使用的虚拟主机。
  3. 反向代理,负载均衡。当网站的访问量达到一定程度后,单台服务器不能满足用户的请求时,需要用多台服务器集群可以使用nginx做反向代理。并且多台服务器可以平均分担负载,不会因为某台服务器负载高宕机而某台服务器闲置的情况。

3 nginx安装

下载nginx
点这里进入nginx官网
这里安装的版本是1.8.0
如果之前安装过,可以先删除:
在这里插入图片描述

3.1 要求的安装环境
  1. 需要安装gcc的环境。
yum install gcc-c++
  1. 第三方的开发包
  • PCRE
    PCRE(Perl Compatible Regular Expressions)是一个Perl库,包括 perl 兼容的正则表达式库。nginx的http模块使用pcre来解析正则表达式,所以需要在linux上安装pcre库。
yum install -y pcre pcre-devel
  • zlib
    zlib库提供了很多种压缩和解压缩的方式,nginx使用zlib对http包的内容进行gzip,所以需要在linux上安装zlib库。
yum install -y zlib zlib-devel
  • openssl
    OpenSSL 是一个强大的安全套接字层密码库,囊括主要的密码算法、常用的密钥和证书封装管理功能及SSL协议,并提供丰富的应用程序供测试或其它目的使用。
    nginx不仅支持http协议,还支持https(即在ssl协议上传输http),所以需要在linux安装openssl库。
yum install -y openssl openssl-devel
3.2 安装步骤
  1. 把nginx的源码包上传到linux系统
  2. 解压缩
tar zxf nginx-1.8.0.tar.gz -C /usr/local
  1. 使用configure命令创建一makeFile文件
./configure \
--prefix=/usr/local/nginx \
--pid-path=/var/run/nginx/nginx.pid \
--lock-path=/var/lock/nginx.lock \
--error-log-path=/var/log/nginx/error.log \
--http-log-path=/var/log/nginx/access.log \
--with-http_gzip_static_module \
--http-client-body-temp-path=/var/temp/nginx/client \
--http-proxy-temp-path=/var/temp/nginx/proxy \
--http-fastcgi-temp-path=/var/temp/nginx/fastcgi \
--http-uwsgi-temp-path=/var/temp/nginx/uwsgi \
--http-scgi-temp-path=/var/temp/nginx/scgi

注意:启动nginx之前,上边将临时文件目录指定为/var/temp/nginx,需要在/var下创建temp及nginx目录

mkdir /var/temp/nginx/client -p
mkdir /usr/local/nginx
  1. 编译
make
  1. 安装
make install

安装完成!
在这里插入图片描述

3.3 启动 nginx

进入sbin目录(上个图片所示目录)
启动:

./nginx
3.4 关闭 nginx
./nginx -s stop

推荐使用以下内容:

./nginx -s quit
3.5 重启 nginx
  1. 先关闭再启动;
  2. 可以使用以下内容更方便:
./nginx -s reload
3.6访问 nginx

在浏览器输入ip直接访问:
在这里插入图片描述
注意:关闭防火墙,或者开放端口

4 配置虚拟主机

就是在一台服务器启动多个网站。
如何区分不同的网站:

  1. 域名不同;
  2. 端口不同
4.1 通过端口区分不同虚拟机

Nginx的配置文件:

/usr/local/nginx/conf/nginx.conf

在这里插入图片描述
可以配置多个server,配置了多个虚拟主机。
记得每次更改了配置文件,要重载:

nginx -s reload
4.2 通过域名区分虚拟主机

暂留白;

5 反向代理

5.1 什么是反响代理

正向代理:
在这里插入图片描述
反向代理:
在这里插入图片描述
反向代理服务器决定哪台服务器提供服务,
返回代理服务器不提供服务器。也是请求的转发。

5.2 Nginx实现反向代理

发送请求先给nginx,nginx将请求转发给某个特定服务器的特定端口。

  1. 启动一个tomcat
  2. 将tomcat配置在nginx.conf即可

以下conf配置启用了两个tomcat:
注意:
upstream的名字对应serverproxy_pass路径;
upstream中的ip是实际的ip
server中的server_name是访问时输入的名字,可以是域名、ip等

upstream tomcat1 {
	server 192.168.25.148:8080;
    }
    server {
        listen       80;
        server_name  www.sina.com.cn;

        #charset koi8-r;

        #access_log  logs/host.access.log  main;

        location / {
            proxy_pass   http://tomcat1;
            index  index.html index.htm;
        }
    }
    upstream tomcat2 {
	server 192.168.25.148:8081;
    }
    server {
        listen       80;
        server_name  www.sohu.com;

        #charset koi8-r;

        #access_log  logs/host.access.log  main;

        location / {
            proxy_pass   http://tomcat2;
            index  index.html index.htm;
        }
    }

6 负载均衡

请求发送给nginx,nginx转发请求的时候,如果配置了多台服务器,默认情况下,平均分配请求数量。
1、启动多个tomcat
2、将tomcat配置在nginx.conf即可

upstream tomcat {
 	server 192.168.136.131:8080 weight=2;
 	server 192.168.136.131:8081;
}

如果一个服务由多条服务器提供,需要把负载分配到不同的服务器处理,需要负载均衡。
以下conf配置文件是,启动了两个tomcat,每个tomcat下部署相同的项目,用以提高并发量:
注意:weight=2 是权重,可以根据服务器的实际情况调整服务器权重。权重越高分配的请求越多,权重越低,请求越少。默认是都是1

upstream tomcat {
  server 192.168.236.129:8080 weight=2;
  server 192.168.236.129:8081;
}

server {
    listen       80;
    server_name  192.168.236.129;

    #charset koi8-r;

    #access_log  logs/host.access.log  main;

    location / {
        proxy_pass   http://tomcat;
        index  index.html index.htm;
    }

    #error_page  404              /404.html;

    # redirect server error pages to the static page /50x.html
    #
    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   html;
    }

    # proxy the PHP scripts to Apache listening on 127.0.0.1:80
    #
    #location ~ \.php$ {
    #    proxy_pass   http://127.0.0.1;
    #}

    # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
    #
    #location ~ \.php$ {
    #    root           html;
    #    fastcgi_pass   127.0.0.1:9000;
    #    fastcgi_index  index.php;
    #    fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;
    #    include        fastcgi_params;
    #}

    # deny access to .htaccess files, if Apache's document root
    # concurs with nginx's one
    #
    #location ~ /\.ht {
    #    deny  all;
    #}
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值