nginx(重点篇)

1.图片/文件上传分析

传统方式的文件上传:将文件通过流传入到tomcat服务器下面的images文件夹中,这样的上传方式效率十分低下、高并发情况下极易出现线程异常

集群下的文件上传:搭建负载均衡服务器nginx,由专门负责上传/下载的图片服务器FastDFS统一管理

FastDFS:分布式文件系统

 

2.nginx简介

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

 

2>nginx应用场景

http服务器。Nginx是一个http服务可以独立提供http服务。可以做网页静态服务器。

虚拟主机。可以实现在一台服务器虚拟出多个网站。例如个人网站使用的虚拟主机。

反向代理,负载均衡。当网站的访问量达到一定程度后,单台服务器不能满足用户的请求时,需要用多台服务器集群可以使用nginx做反向代理。并且多台服务器可以平均分担负载,不会因为某台服务器负载高宕机而某台服务器闲置的情况。

官方网站http://nginx.org/

 

3.nginx的安装(linux系统下)

安装环境:

1>需要安装gcc的环境:nginx是基于c语言开发的,所以在安装前必须安装c语言的编译环境

yum install gcc-c++

2>第三方开发包三条yum命令

       PCRE(Perl Compatible Regular Expressions)是一个Perl库,包括 perl 兼容的正则表达式库。nginx的http模块使用pcre来解析正则表达式,所以需要在linux上安装pcre库。注:pcre-devel是使用pcre开发的一个二次开发库。nginx也需要此库。

yum install -y pcre pcre-devel

zlib库提供了很多种压缩和解压缩的方式,nginx使用zlib对http包的内容进行gzip,所以需要在linux上安装zlib库。

yum install -y zlib zlib-devel

       OpenSSL 是一个强大的安全套接字层密码库,囊括主要的密码算法、常用的密钥和证书封装管理功能及SSL协议,并提供丰富的应用程序供测试或其它目的使用。nginx不仅支持http协议,还支持https(即在ssl协议上传输http),所以需要在linux安装openssl库。

yum install -y openssl openssl-devel

 

安装步骤:

第一步:把nginx的源码包上传到linux系统:nginx-1.8.0.tar.gz

第二步:解压缩

[root@localhost ~]# tar zxvf nginx-1.8.0.tar.gz

第三步:进入nginx-1.8.0然后使用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下创建tempnginx目录

[root@localhost sbin]# mkdir /var/temp/nginx/client -p

第四步:make

第五步:make install

 

启动nginx:

进入/usr/local/nginx/sbin目录

[root@localhost ~]# cd /usr/local/nginx/sbin

启动:[root@localhost sbin]# ./nginx

关闭nginx:[root@localhost sbin]# ./nginx -s stop             推荐使用:[root@localhost sbin]# ./nginx -s quit

刷新配置文件:[root@localhost sbin]# ./nginx -s reload

访问ngin(linux的ip地址):192.168.247.128,默认是80端口

 

 

4.配置虚拟主机

 

 

在一台服务器启动多个网站,如何区分不同的网站:通过端口区分虚拟主机,通过域名区分不同虚拟主机

端口:例如(80,81,82....)

域名:就是网站(www.baidu.comwww.jd.com....)

listen(端口)、server——name(域名:访问的网站)、root(访问后显示的页面首页)

1>通过端口区分虚拟主机

nginx的配置文件:/usr/local/nginx/conf/nginx.conf

可以配置多个server,这样配置了多个虚拟主机。

添加一个虚拟主机:端口为81,当我们访问nginx:192.168.247.128:81此时出现的页面是html-81

注意:修改配置文件后要刷新nginx服务器[root@localhost sbin]# ./nginx -s reload

#监听80端口,并把接收到的非https请求 转换成https的
server {
        listen  80;
        server_name lab.52csjy.com;

    	rewrite ^(.*)$  https://$host$1 permanent;
    }

server {
        listen       443 ssl default_server;
        server_name lab.52csjy.com;
        # root         /usr/share/nginx/html;
        # Load configuration files for the default server block.
        # include /etc/nginx/default.d/ *.conf;

        ssl_certificate /etc/ssl/1992045_lab.52csjy.com/1992045_lab.52csjy.com.pem;
        ssl_certificate_key /etc/ssl/1992045_lab.52csjy.com/1992045_lab.52csjy.com.key;
        ssl_session_cache shared:SSL:1m;
        ssl_session_timeout  10m;
        ssl_ciphers HIGH:!aNULL:!MD5;
        ssl_prefer_server_ciphers on;
    
        location / {
           proxy_pass http://127.0.0.1:8989;
        }
        location /upload{
           alias /www/my_project/upload;
        }
        access_log  /www/wwwlogs/access.log;
    }

 

2>通过域名区分虚拟主机

Dns服务器:把域名解析为ip地址,保存的就是域名和ip的映射关系。

nginx的/usr/local/nginx/conf/nginx.conf配置文件中:一个域名对应一个ip地址,一个ip地址可以被多个域名绑定。

测试方法:

本地测试可以修改hosts文件。
修改window的hosts文件:(C:\Windows\System32\drivers\etc)
可以配置域名和ip的映射关系,如果hosts文件中配置了域名和ip的对应关系,不需要走dns服务器。

192.168.247.128 www.taobao.com
192.168.247.128 www.baidu.com

nginx的/usr/local/nginx/conf/nginx.conf配置文件添加server节点:listen(端口)、server——name(域名:访问的网站)、root(访问后显示的页面首页)

  server {
        listen       80;
        server_name  www.taobao.com;

        #charset koi8-r;

        #access_log  logs/host.access.log  main;

        location / {
            root   html-taobao;
            index  index.html index.htm;
        }
    }
    server {
        listen       80;
        server_name  www.baidu.com;

        #charset koi8-r;

        #access_log  logs/host.access.log  main;

        location / {
            root   html-baidu;
            index  index.html index.htm;
        }
    }

 

 

5.反向代理

正向代理:服务器接收到用户请求后,根据用户请求的信息决定去那台服务器(用户决定)

反向代理:反向代理(Reverse Proxy)实际运行方式是指以代理服务器来接受internet上的连接请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给internet上请求连接的客户端,此时代理服务器对外就表现为一个服务器。(服务器决定)

反向代理的作用:负载均衡,通过反向代理服务器来优化网站的负载

 

2>nginx实现反向代理:两个域名指向同一台nginx服务器,用户访问不同的域名显示不同的网页内容。

第一步:安装两个tomcat,分别运行在8080和8081端口。

第二步:启动两个tomcat。

第三步:反向代理服务器的配置(nginx的/usr/local/nginx/conf/nginx.conf配置文件)

listen(端口)、server——name(域名:访问的网站)、root(访问后显示的页面首页)、tomcat1 /2(tomcat的首页,此时有两个tomcat在启动中)

    upstream tomcat1 {
	    server 192.168.247.128: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.247.128: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;
        }
    }

第四步:nginx重新加载配置文件

第五步:配置域名

在hosts文件中添加域名和ip的映射关系(C:\Windows\System32\drivers\etc)

 192.168.247.128 www.sina.com.cn

 192.168.247.128 www.sohu.com

第六步:测试 >>> 在window浏览器中访问www.sina.com.cn和www.sohu.com

 

6.负载均衡

如果一个服务由多条服务器提供,需要把负载分配到不同的服务器处理,需要负载均衡。

 upstream tomcat2 {

       server  192.168.247.128:8081;

       server  192.168.247.128:8082;

  }

可以根据服务器的实际情况调整服务器权重。权重越高分配的请求越多,权重越低,请求越少。默认是都是1

 upstream tomcat2 {
	server 192.168.247.128:8081;
	server 192.168.247.128:8082 weight=2;
    }

 

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值