手摸手配置Nginx服务

你们好!我是一个喜欢前端的~菜鸡Hhtml

背景

  • 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.configlinux

#运行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.confnginx

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容器了 web

  • 使用指令建立容器、文件挂载映射 、建立 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
复制代码

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

Nginx验收

静态文件代理centos

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

image.png

反向代理跨域

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 定义的服务器列表 
    }
}

复制代码

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

upstream serves { 
    server 127.0.0.1:7878; 
    server 192.168.10.121:6666 backup;  #热备     
}
复制代码

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

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

相关文章
相关标签/搜索