最新公告
  • 欢迎您光临起源地模板网,本站秉承服务宗旨 履行“站长”责任,销售只是起点 服务永无止境!立即加入钻石VIP
  • 手摸手配置Nginx服务

    正文概述 掘金(菜鸡H)   2021-03-19   608

    大家好!我是一个喜欢前端的~菜鸡H

    背景

    • Nginx前端的小宝贝、有了它我们可以玩很多很多东西、笔者在2019年接触到了小宝贝、起初使用云服务器一点一点的配置环境(真的好麻烦呀)安装各种软件对版本也有一定要求装prce库啊、装OpenSSL啥的、踩完好多配置坑、后面初步学习了下docker、一个字 爽歪歪 所以笔者准备输出一篇Nginx小笔记、?

    我们要实现什么

    • 在服务器部署一个静态项目、让外网可以访问?
    • 配置一个反向代理、用于解决跨域需求?
    • 配置一个负载均衡的功能、配置权重去访问不同的静态文件?

    安装docker

    • 查看系统要求(Docker 要求 CentOS 系统的内核版本高于 3.10 ,查看CentOS的内核版本。)
    uname -a
    
    • 删除旧版本(没安装的不用)
    yum remove docker  docker-common docker-selinux docker-engine
    
    • 安装需要的软件包(yum-util 提供yum-config-manager功能,另外两个是devicemapper驱动依赖的)
    sudo yum install -y yum-utils device-mapper-persistent-data lvm2
    
    • 设置Docker yum源
    sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
    
    • 查看所有仓库中所有docker版本(可以查看所有仓库中所有docker版本,并选择特定的版本安装)
    yum list docker-ce --showduplicates | sort -r
    
    • 安装docker
    sudo yum install docker-ce
    //如果要安装特定版本使用: sudo yum install docker-ce-18.06.1.ce
    //设置为开机启动
    systemctl enable docker
    //启动
    systemctl start docker
    //查看状态
    systemctl status docker
    //查看 版本
    docker version
    

    以上就是docker的安装步骤、下一步我们要使用docker去安装nginx docker文档

    Nginx安装

    • 使用docker拉取Nginx镜像 对于镜像我是这样理解的、它类似一个类、里面有Nginx各种所依赖的环境属性、它把所有的东西都写在类里面、我们只需要按它的配置项传入相对应参数我们就可以得到一个实例(Nginx服务)、我们可以通过这个类创建多个Nginx(我们指容器)
    docker pull nginx:latest  //拉取最新版nginx
    docker images //查看镜像
    
    • 创建宿主机与容器映射的配置文件 这样做的目的在于、我可以直接修改宿主机的配置文件然后重启Nginx容器就可以了、不用进入容器去修改配置文件、直接复制下方创建文件夹指令
    cd /root  
    mkdir nginx
    cd nginx
    mkdir conf
    mkdir logs
    mkdir ssl
    mkdir web 
    cd conf
    touch nginx.conf
    mkdir conf.d
    cd conf.d
    touch default.conf
    

    现在我们创建了需要挂载映射的配置文件、但是文件内都是空的、所以我们要复制一些基础的配置选项进去 nginx.config

    #运行nginx的用户
    user  nginx;
    #启动进程设置成和CPU数量相等
    worker_processes  1;
    
    #全局错误日志及PID文件的位置
    error_log  /var/log/nginx/error.log warn;
    pid        /var/run/nginx.pid;
    
    #工作模式及连接数上限
    events {
            #单个后台work进程最大并发数设置为1024
        worker_connections  1024;
    }
    
    http {
        #设定mime类型
        include       /etc/nginx/mime.types;
        default_type  application/octet-stream;
    
        #设定日志格式
        log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                          '$status $body_bytes_sent "$http_referer" '
                          '"$http_user_agent" "$http_x_forwarded_for"';
    
        access_log  /var/log/nginx/access.log  main;
        sendfile        on;
        #tcp_nopush     on;
        #设置连接超时的事件
        keepalive_timeout  65;
        #开启GZIP压缩
        #gzip  on;
        include /etc/nginx/conf.d/*.conf;  
    }
    

    default.conf

    server {
         listen    80;       #侦听80端口,如果强制所有的访问都必须是HTTPs的,这行需要注销掉
         server_name  localhost;             #域名或IP
         # 定义首页索引目录和名称
         location / {
            root   /web/;
            index  index.html index.htm;
         }
         #重定向错误页面到 /50x.html
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   /usr/share/nginx/html;
        }
    }
    

    注意:server_name换成你自己的IP或者域名哦 好了、准备工作都做好了、现在我们就需要去创建一个Nginx容器了

    • 使用指令创建容器、文件挂载映射 、创建 Nginx 容器
    docker run --detach \
       --name demo-nginx --restart=always --privileged=true \
       -p 80:80 \
       -v /root/nginx/web:/web:rw\
        -v /root/nginx/conf/nginx.conf:/etc/nginx/nginx.conf/:rw\
       -v /root/nginx/conf/conf.d/default.conf:/etc/nginx/conf.d/default.conf:rw\
       -v /root/nginx/logs:/var/log/nginx/:rw\
       -v /root/nginx/ssl:/ssl/:rw\
       -d nginx
    

    这里主要做了端口的映射、和文件的挂载功能

    Nginx验收

    静态文件代理

    • 查看是否容器创建成功
    docker ps //查看运行的容器、看是否有你run的容器、看name是否是 demo-nginx
    
    • 创建显示的静态文件
    cd /root/nginx/web
    touch index.html 
    vi index.html
    //然后在里面随便写一些内容在进行保存
    :wq //保存
    //重启docker容器
    docker restart + 容器ID
    
    • 然后出去访问自己的IP就能看到你刚刚在index.html的内容啦

    手摸手配置Nginx服务

    反向代理

    upstream serves { 
        server 192.168.10.121:8889;
    }
    server {
        ....
        location  ~*^.+$ {         
            proxy_pass  http://serves;  #请求转向serves 定义的服务器列表         
        }
    }
    

    负载均衡

    upstream serves { 
        server 127.0.0.1:7878 weight=1; //weight配置权重 跟据配置的权重的大小而分发给不同服务器不同数量的请求。如果不设置,则默认为1。下面服务器的请求顺序为:ABBABBABBABBABB.
        server 192.168.10.121:666 weight=2;
    }
    server {
        ....
        location  ~*^.+$ {         
            proxy_pass  http://serves;  #请求转向serves 定义的服务器列表         
        }
    }
    
    

    热备\当某个服务器挂了、另外一个备用服务器将接管服务

    upstream serves { 
        server 127.0.0.1:7878; 
        server 192.168.10.121:6666 backup;  #热备     
    }
    

    以上就是Nginx我在项目中所使用到的点、后期如果还有别的我会继续在上面进行补充

    本文正在参与「掘金 2021 春招闯关活动」, 活动详情


    起源地下载网 » 手摸手配置Nginx服务

    常见问题FAQ

    免费下载或者VIP会员专享资源能否直接商用?
    本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。更多说明请参考 VIP介绍。
    提示下载完但解压或打开不了?
    最常见的情况是下载不完整: 可对比下载完压缩包的与网盘上的容量,若小于网盘提示的容量则是这个原因。这是浏览器下载的bug,建议用百度网盘软件或迅雷下载。若排除这种情况,可在对应资源底部留言,或 联络我们.。
    找不到素材资源介绍文章里的示例图片?
    对于PPT,KEY,Mockups,APP,网页模版等类型的素材,文章内用于介绍的图片通常并不包含在对应可供下载素材包内。这些相关商业图片需另外购买,且本站不负责(也没有办法)找到出处。 同样地一些字体文件也是这种情况,但部分素材会在素材包内有一份字体下载链接清单。
    模板不会安装或需要功能定制以及二次开发?
    请QQ联系我们

    发表评论

    还没有评论,快来抢沙发吧!

    如需帝国cms功能定制以及二次开发请联系我们

    联系作者

    请选择支付方式

    ×
    迅虎支付宝
    迅虎微信
    支付宝当面付
    余额支付
    ×
    微信扫码支付 0 元