SSM视频教程第4-2节:使用 Nginx 访问 FastDSF 文件服务器

Nginx可以做什么呢?

Nginx可以做HTTP服务器

可以利用它来做一些静态资源的访问服务器,例如我们系统用到的图片,可以用Nginx服务器来专门访问我们的图片系统。

例如,有一个电商的网站,当有商品在系统中上架时,可以将上架的商品图片存放到我们的图片服务器,当我们需要这个商品的详情的时候,就可以通过Nginx去访问相应的图片。nginx比apache占用的cpu资源少,在高并发的情况下能保持低资源低消耗高性能。

Nginx可以做虚拟主机

可以在同一台服务器上运行多个网站,而且呢,这些不同网站是不会互相干扰的,在区分不同的网站我们可以通过不同的IP,不同的端口和不同的域名三种方式区分,但是一般使用的最多的就是使用域名来区分。例如通过www.a.com 来访问a网站,通过www.b.com 来访问b网站,并且a.com和b.com是基于同一个ip地址的。

虚拟主机的配置可以在nginx的conf文件中进行配置,在配置文件中每个server节点就代表一个虚拟主机。例如我想要配置www.a.com 来访问a网站,通过 www.b.com 来访问b网站就可以这样子:

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

        #charset koi8-r;

        #access_log  logs/host.access.log  main;

        location / {
            root   a/html; //指向a.com的网站
            index  index.html index.htm;
        }

        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }

    }



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

            #charset koi8-r;

            #access_log  logs/host.access.log  main;

            location / {
                root   b/html; //指向b.com的网站
                index  index.html index.htm;
            }

            error_page   500 502 503 504  /50x.html;
            location = /50x.html {
                root   html;
            }

        }

配置好文件我们保存然后将Nginx reload一下之后,我们这时候访问 www.a.com 时Nginx就会去请求a网站给我们,同样访问 www.b.com 就会去请求b的网站,他们之间互不影响,且又绑定在同一个ip上。这种对于一些多个小的网站,绑定在同一个ip上是很好的实现方式。

Nginx可以进行负载均衡的反向代理

反向代理就是当你的网站因为并发量太大,部署在了多个服务器上,那么当用户去访问你的网站的时候,不知道去访问哪个服务器,这时候Nginx就是来帮忙进行反向代理请求的,也就是用户访问Nginx,然后Nginx帮用户去请求某一个Nginx认为该访问的服务器。

负载均衡反向代理的使用也是通过Nginx的文件进行配置的:

在conf中通过upstream来配置要代理的服务器:

    upstream tomcatserver1{
        server 192.168.88.61;
        server 192.168.88.62;
    }

其中还可以定义这些服务器的负载权重,是否参与负载等,可以在ip地址后面添加定义:

down 表示单前的server暂时不参与负载

weight 默认为1,weight越大,负载的权重就越大

backup 其它所有的非backup机器down或者忙的时候,就会请求backup机器。所以这台机器压力会是最轻的。

max_fails 允许请求失败的次数默认为1.当超过最大次时,返回proxy_next_upstream 模块定义的错误

fail_timeout: max_fails次失败后,暂停的时间。

比如 server 192.168.88.61 weight=2; 就代表192.168.88.61这个服务器会被访问的权重更多。

在server中配置域名和端口号,然后用proxy_pass去访问我们刚刚定义的upstream:

    server {
    listen       80;
    server_name  wistbean.server1.com;


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

    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   html;
    }

}

Nginx在Linux上安装

首先需要安装Nginx的依赖环境:

yum install -y openssl openssl-devel

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

yum install -y zlib zlib-devel

多种压缩和解压缩的方式,nginx使用zlib对http包的内容进行gzip

yum install -y pcre pcre-devel

nginx的http模块使用pcre来解析正则表达式

yum install gcc-c++

安装nginx需要先将官网下载的源码进行编译,编译依赖gcc环境

下载Nginx

http://nginx.org/en/download.html ,例如下载1.8.1版本可以

wget http://nginx.org/download/nginx-1.8.1.tar.gz

解压Nginx

tar -zxvf nginx-1.8.1.tar.gz

参数配置

1
cd nginx-1.8.1
    ./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 \
    --add-module=/usr/local/src/fastdfs-nginx-module/src/  \
    --with-http_ssl_module

将以上复制到Linux执行一遍。然后需要到**/var/temp/**中创建nginx目录。

mkdir nginx

编译安装

make
make install

启动

进入nginx的sbin目录:

cd /usr/local/nginx/sbin
./nginx

开始启动了…

关闭

./nginx -s stop

重新加载配置文件

./nginx -s reload

相关

Java文件服务器 FastDFS 的搭建教程

SSM视频教程目录