美文网首页Linux/Apache/Nignx
Linux之Nginx四挡的路飞(个人的学习公开)

Linux之Nginx四挡的路飞(个人的学习公开)

作者: 吴佳浩 | 来源:发表于2018-10-19 10:24 被阅读0次

    简介

    Nginx 是一个很强大的高性能Web反向代理服务,它具有很多非常优越的特性:

    在连接高并发的情况下,Nginx是Apache服务不错的替代品:Nginx在美国是做虚拟主机生意的老板们经常选择的软件平台之一。能够支持高达 50,000 个并发连接数的响应,感谢Nginx为我们选择了 epoll and kqueue作为开发模型。

    操作

    Nginx的基本操作
    解释 命令
    安装 yum install nginx
    启动 service nginx start
    停止 service nginx stop
    重载 service nginx reload
    重启 service nginx restart

    1、添加CentOS7 Nginx yum 资源库
    sudo rpm -Uvh http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm
    2、sudo yum install -y nginx

    [wujiahao@host ~]# sudo yum install -y nginx
    已加载插件:fastestmirror
    base                                                                                                                                              | 3.6 kB  00:00:00     
    epel                                                                                                                                              | 3.2 kB  00:00:00     
    extras                                                                                                                                            | 3.4 kB  00:00:00     
    nginx                                                                                                                                             | 2.9 kB  00:00:00     
    updates                                                                                                                                           | 3.4 kB  00:00:00     
    (1/8): epel/x86_64/group_gz                                                                                                                       |  88 kB  00:00:00     
    (2/8): base/7/x86_64/group_gz                                                                                                                     | 166 kB  00:00:00     
    (3/8): epel/x86_64/updateinfo                                                                                                                     | 934 kB  00:00:00     
    (4/8): extras/7/x86_64/primary_db                                                                                                                 | 204 kB  00:00:00     
    (5/8): epel/x86_64/primary                                                                                                                        | 3.6 MB  00:00:00     
    (6/8): base/7/x86_64/primary_db                                                                                                                   | 5.9 MB  00:00:01     
    (7/8): updates/7/x86_64/primary_db                                                                                                                | 6.0 MB  00:00:00     
    (8/8): nginx/x86_64/primary_db                                                                                                                    |  35 kB  00:00:02     
    Determining fastest mirrors
    epel                                                                                                                                                         12741/12741
    正在解决依赖关系
    --> 正在检查事务
    ---> 软件包 nginx.x86_64.1.1.14.0-1.el7_4.ngx 将被 安装
    --> 解决依赖关系完成
    依赖关系解决
    =======================================================================================================================================================================
     Package                             架构                                 版本                                                 源                                   大小
    =========================================================================================================================================================================
    正在安装:
     nginx                               x86_64                               1:1.14.0-1.el7_4.ngx                                 nginx                               750 k
    事务概要
    =========================================================================================================================================================================
    安装  1 软件包
    总下载量:750 k
    安装大小:2.6 M
    Downloading packages:
    nginx-1.14.0-1.el7_4.ngx.x86_64.rpm                                                                                                               | 750 kB  00:00:56     
    Running transaction check
    Running transaction test
    Transaction test succeeded
    Running transaction
    警告:RPM 数据库已被非 yum 程序修改。
      正在安装    : 1:nginx-1.14.0-1.el7_4.ngx.x86_64                                                                                                                    1/1 
    ----------------------------------------------------------------------
    Thanks for using nginx!
    Please find the official documentation for nginx here:
    * http://nginx.org/en/docs/
    Please subscribe to nginx-announce mailing list to get
    the most important news about nginx:
    * http://nginx.org/en/support.html
    Commercial subscriptions for nginx are available on:
    * http://nginx.com/products/
    ----------------------------------------------------------------------
      验证中      : 1:nginx-1.14.0-1.el7_4.ngx.x86_64                                                                                                                    1/1 
    已安装:
      nginx.x86_64 1:1.14.0-1.el7_4.ngx                                                                                                                                      
    完毕!
    

    3、firewall-cmd --zone=public --add-port=80/tcp --permanent 关闭防火墙
    如果是阿里云或者公司的服务器的话请在网络安全组当中配置开启80端口

    4.(概念)配置NGINX的虚拟主机
    Nginx配置文件常见结构的从外到内依次是「http」「server」「location」等等,缺省的继承关系是从外到内,也就是说内层块会自动获取外层块的值作为缺省值。

    5.[wujiahao@host ~]# service nginx start
    在浏览器输入你的公网IP地址就会出现下面的页面啦

    吴佳浩的个人博客
    1. 打开vim /etc/nginx/conf.d/default.conf的文件
      这就是我们nginx的默认基础配置啦
      这里跟Apache的配置类似都是采用读取一个个模块方式加载
      尽量保持 /etc/nginx/nginx.conf主文件的清晰

    /etc/nginx/nginx.conf文件中的include /etc/nginx/conf.d/*.conf;
    意思就是默认导入conf.d下面所以后缀为.conf的文件都导入到nginx 的配置当中
    至此你应该明白不要主文件当中做配置

    7.那么接下来让我看看到底怎么配置一个自己的虚拟主机吧
        1) 首先复制一份默认文件 改个名字我们就在这个文件当中修改我们自己的配置
    [wujiahao@host ~]# vim /etc/nginx/nginx.conf
    [wujiahao@host ~]# cd /etc/nginx/conf.d/
    [wujiahao@host conf.d]# cp default.conf first.conf
    [wujiahao@host conf.d]# vim first.conf
    删除文件内,所有的内容重写如下

    server {
        listen       80;    #监听的端口80
        server_name  wujiahao.com; #域名地址
        root   /static/www/;      #站点的根目录
        index  index.html index.htm; #默认访问  index  index.html index.htm 文件
    }
    

    保存退出
    重启nginx
    [wujiahao@host conf.d]#service nginx reload
    至此一个简单的 nginx的配置就OK了
    打开浏览器输入 wujiahao.com 就可以看到你的指定/static/www/的目录下的index文件啦

    8.下面就让我来给大家介绍 nginx流行原因之一反向代理,简而言之就是你以为你访问的是47.101.200.215 这台机器其实你访问的是48.122.201.215 这台机器 这就是反向代理的最直观的意思 如下图 就是反向代理和负载均衡的示意

    负载均衡 反向代理

    那么现在让我们来修改一下first.conf文件实现nginx的反向代理吧
    [wujiahao@host ~]# vim /etc/nginx/nginx.conf
    [wujiahao@host ~]# cd /etc/nginx/conf.d/
    [wujiahao@host conf.d]# cp default.conf first.conf
    [wujiahao@host conf.d]# vim first.conf

    upstream haoge { #被代理的对象  
            server 118.98.105.129:80; #被代理的实际地址,请求最终最终都会达到这里
      }
    server {
      listen 80; 
      linsten 9999;  #nginx 是可以配置多个端口的,所以这里展示80 和9999端口演示
      server_name wujiahao1.com  wujiahao2.com;  #这里也是可以配置多个域名进行访问的
      root /static/www;    #站点根目录
      index index.html index.htm;  #默认访问根目录下的index文件
      access_log /etc/nginx/log/access_haoge.log  haoge;  #指定日志输出的格式可以自定义  
      location / {
         proxy_set_header Host  www.wujiahao.com; #设置代理服务器的头部域名信息因为很多网站可能会设置只允许域名访问
         proxy_pass http://haoge;   #将请求转发到haoge 也就是上面定义的upstream的定义的主机上
      }
    }
    
    

    [wujiahao@host conf.d]#service nginx reload
    你会发现你看到的其实是118.98.105.129:80的这个主机上面的内容 你的请求已经被转发

    9.说完反向代理 我们再来聊聊负载均衡 相信很多小伙伴们都不陌生
    很多大型的网站流量很多 需要做到分流 所以这个时候负载均衡就是必不可少的了那么现在然我们来看看负载均衡的配置吧
    [wujiahao@host ~]# vim /etc/nginx/nginx.conf
    [wujiahao@host ~]# cd /etc/nginx/conf.d/
    [wujiahao@host conf.d]# cp default.conf first.conf
    [wujiahao@host conf.d]# vim first.conf

    upstream haoge { #被代理的对象  此时这里是两个主机地址  如果不分配权重那么将用户的请求将被1:1的分发到两个服务器并返回不同的内容  也就是说你不设置权重 就会两个交的返回两个主机上的内容
            server 118.98.105.129:80 weight=5; 
            server 116.89.103.203:80 weight=1;     #这里的weight代表权重即是比例的意思的  现在这样代表 server1被访问五次之后server2才会被访问一次  依次5:1的比例交替执行
      }
    server {
      listen 80; 
      linsten 9999;  #nginx 是可以配置多个端口的,所以这里展示80 和9999端口演示
      server_name wujiahao1.com  wujiahao2.com;  #这里也是可以配置多个域名进行访问的
      root /static/www;    #站点根目录
      index index.html index.htm;  #默认访问根目录下的index文件
      access_log /etc/nginx/log/access_haoge.log  haoge;  #指定日志输出的格式可以自定义  
      location / {
         proxy_set_header Host  www.wujiahao.com; #设置代理服务器的头部域名信息因为很多网站可能会设置只允许域名访问
         proxy_pass http://haoge;   #将请求转发到haoge 也就是上面定义的upstream的定义的主机上
      }
    }
    
    


    [wujiahao@host conf.d]#service nginx reload
    重启之后测试一下刷新6次就只有一次 server2的内容 说明权重设置成功了
    至此nginx的基本功能 虚拟主机 反向代理 负载均衡就讲完了

    10.最后 再给大家补充一个调试的调试功能 其实也是和我们写代码一样的 写着写着总会出错 那么就需要进行调试,那么现在让我们来看看 如和调试吧
    [wujiahao@host ~]# vim /etc/nginx/nginx.conf
    [wujiahao@host ~]# cd /etc/nginx/conf.d/
    [wujiahao@host conf.d]# cp default.conf first.conf
    [wujiahao@host conf.d]# vim first.conf

    
    server {
      listen 80; 
      linsten 9999; 
      add_header Content-Type "text/plain;charset=utf-8";  #因为浏览器默认解析html 所以这里加上协议头方便解析我们返回的域名
      return 200 "$http_host";        #返回当前访问的域名显示在浏览器
      server_name wujiahao1.com  wujiahao2.com; 
      root /static/www;   
      index index.html index.htm;  
      access_log /etc/nginx/log/access_haoge.log  haoge; 
    }
    

    [wujiahao@host conf.d]#service nginx reload
    当你打开浏览器 通过域名访问就可以直接返回你到底访问的是哪个域名啦
    调试完记得注释不让请求可能会出错
    如果有什么疑问请下方留言 今天的nginx 就说到这里啦

    如果转载请注明出处 --吴佳浩

    相关文章

      网友评论

        本文标题:Linux之Nginx四挡的路飞(个人的学习公开)

        本文链接:https://www.haomeiwen.com/subject/dimjzftx.html