• Nginx实战入门教程


    大纲

      为了让大家更快的学会,该博客中的内容录制成了视频课程:马上在线学习

      

    1.什么是nginx

      

      Nginx是一款高性能的http 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器。

      由俄罗斯的程序设计师Igor Sysoev所开发,官方测试nginx能够支支撑5万并发链接(tomcat 500),并且cpu、内存等资源消耗却非常低,运行非常稳定。

    2.应用场景

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

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

      3、反向代理,负载均衡。当网站的访问量达到一定程度后,单台服务器不能满足用户的请求时,需要用多台服务器集群可以使用nginx做反向代理。

    并且多台服务器可以平均分担负载,不会因为某台服务器负载高宕机而某台服务器闲置的情况。

    3.nginx安装启动访问

    3.1.安装环境准备 

      需要安装gcc的环境(就如同tomcat要运行需要jdk环境一样)
    
      gcc环境安装
    
      sudo apt-get update

      

      sudo apt-get install gcc

      

      安装完了可以执行
      gcc --v
      的命令来查看版本,输出如下:

        

      安装Nginx时需要先安装依赖包

      首先使用dpkg命令查看自己需要的软件是否安装。

      例如查看zlib是否安装:

      root@ubuntu:/usr/java/nginx-1.8.0# dpkg -l | grep zlib

      

      解决依赖包openssl安装,命令:

      sudo apt-get install openssl libssl-dev

      解决依赖包pcre安装,命令:

      sudo apt-get install libpcre3 libpcre3-dev

      解决依赖包zlib安装,命令:

      sudo apt-get install zlib1g-dev

    3.2.安装步骤

      下载nginx

      官方网站:

          http://nginx.org/

      使用的版本是1.8.0版本。

      

    第一步:把nginx-1.8.0.tar.gz上传到linux系统
    第二步:解压缩
    [root@localhost ~]# tar zxf nginx-1.8.0.tar.gz 
    第三步:使用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目录
    [root@localhost sbin]# mkdir /var/temp/nginx/client -p
    第四步:make
    第五步:make install

      

    3.3.启动

      进入sbin目录

      root@ubuntu:/usr/local/nginx/sbin# ./nginx

      检查是否启动:

      

    关闭方式一:nginx:
    root@ubuntu:/usr/local/nginx/sbin# ./nginx -s stop
    关闭方式二:
    root@ubuntu:/usr/local/nginx/sbin# ./nginx -s quit
    重启nginx:
    1、先关闭后启动。
    2、刷新配置文件:
    root@ubuntu:/usr/local/nginx/sbin# ./nginx -s reload

    3.4.访问 

      192.168.25.106:80

      默认是80端口。

      注意:是否关闭防火墙。

      

    4.配置虚拟主机 

      就是在一台服务器启动多个网站。

      如何区分不同的网站:

      1、域名不同

      2、端口不同

    4.1.通过端口区分不同虚拟主机  

      Nginx的配置文件:

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

      

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

      复制一个目录: root@ubuntu:/usr/local/nginx# cp html/  html81 -r

      添加虚拟主机:

     #测试使用81端口,对应的根文件为:html81
        server {
            listen       81;
            server_name  localhost;
            location / {
                root   html81;
                index  index.html index.htm;
            }
        }

      重新启动服务器

      root@ubuntu:/usr/local/nginx/sbin# ./nginx -s stop

      root@ubuntu:/usr/local/nginx/sbin# ./nginx

      分别访问80端口和81端口

      192.168.25.106:80

      192.168.25.106:81

    4.2.通过域名区分不通虚拟主机

      域名就是网站。

          www.baidu.com

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

      一级域名:

      Baidu.com

      二级域名:

      Item.baidu.com

      三级域名:

      1.Image.baidu.com

      一个域名对应一个ip地址,一个ip地址可以被多个域名绑定。

      本地测试可以修改hosts文件。

      修改windowhosts文件:(C:WindowsSystem32driversetc

      可以配置域名和ip的映射关系,如果hosts文件中配置了域名和ip的对应关系,不需要走dns服务器。

      下载小工具:https://pc.qq.com/search.html#!keyword=SwitchHosts

      

    4.3.nginx的域名配置

      复制taobao目录: root@ubuntu:/usr/local/nginx# cp html/  html-taobao  -r

      复制wfd360目录: root@ubuntu:/usr/local/nginx# cp html/  html-wfd360  -r

      添加如下两个节点

    #测试使用都是用域名配置的80端口  www.taobao.com
    server {
            listen       80;
            server_name  www.taobao.com;
            location / {
                root   html-taobao;
                index  index.html index.htm;
            }
        }
    #测试使用都是用域名配置的80端口  www.wfd360.com
    server {
            listen       80;
            server_name  www.wfd360.com;
            location / {
                root   html-wfd360;
                index  index.html index.htm;
            }
        }

      域名的配置:

      192.168.25.128  www.taobao.com

      192.168.25.128  www.wfd360.com

    5.反向代理

    5.1.什么是反向代理

      正向代理

      正向代理类似一个跳板机,代理访问外部资源。

      

      举个例子:

      我是一个用户,我访问不了某网站,但是我能访问一个代理服务器,这个代理服务器呢,他能访问那个我不能访问的网站,于是我先连上代理服务器,告诉他我需要那个无法访问网站的内容,代理服务器去取回来,然后返回给我。从网站的角度,只在代理服务器来取内容的时候有一次记录,有时候并不知道是用户的请求,也隐藏了用户的资料,这取决于代理告不告诉网站。

      反向代理(Reverse Proxy)

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

      

       

    5.2.nginx实现反向代理

      需求:

      两个域名指向同一台nginx服务器,用户访问不同的域名显示不同的网页内容。

      两个域名是www.wfd360.comwww.wfd361.com

      nginx服务器使用虚拟机192.168.25.106

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

      

       修改首页,便于区分

      第二步:启动两个tomcat

      第三步:反向代理服务器的配置

    #反向代理服务器的配置
    upstream tomcat2 {
        server 192.168.25.106:8280;
                  
                  }
        server {
            listen       80;
            server_name  www.wfd362.com;
            location / {
                  # root   html-wfd360;
                proxy_pass   http://tomcat2;
                index  index.html index.htm;
            }
        }
        upstream tomcat1 {
        server 192.168.25.106:8180;
        }
        server {
            listen       80;
            server_name  www.wfd361.com;
            location / {
                proxy_pass   http://tomcat1;
                index  index.html index.htm;
            }
        }

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

      第五步:配置域名

      在hosts文件中添加域名和ip的映射关系

      192.168.25.106  www.wfd360.com

      192.168.25.106  www.wfd361.com

      第六步:访问测试

    5.3.负载均衡

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

    upstream tomcat2 {
        server 192.168.25.106:8180;
        server 192.168.25.106:8280;
      }

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

     upstream tomcat2 {
    server 192.168.25.106:8180;
        server 192.168.25.106:8280 weight=2;
        }

    6.课程资料

    1.nginx中文手册:https://www.nginx.cn/nginx-how-to

    2.为了让大家更快的学会,该博客中的内容录制成了视频课程:马上在线学习

     完美!

  • 相关阅读:
    Java遍历Map键、值。获取Map大小的方法
    Oracle CASE WHEN 用法介绍
    JS动态改变select选择变更option的index值
    js对select动态添加和删除OPTION
    在js中使用createElement创建HTML对象和元素
    清空select标签中option选项的3种不同方式
    json-lib包笔记
    异常:javax.el.PropertyNotFoundException: Property 'id' not found on ..........
    golang struct的使用
    golang多维数组的切片
  • 原文地址:https://www.cnblogs.com/wfd360/p/12073927.html
Copyright © 2020-2023  润新知