背景
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 //拉取最新版nginxdocker images //查看镜像
创建宿主机与容器映射的配置文件
**这样做的目的在于、我可以直接修改宿主机的配置文件然后重启Nginx容器就可以了、不用进入容器去修改配置文件、直接复制下方创建文件夹指令**cd /rootmkdir nginxcd nginxmkdir confmkdir logsmkdir sslmkdir webcd conftouch nginx.confmkdir conf.dcd conf.dtouch default.conf
现在我们创建了需要挂载映射的配置文件、但是文件内都是空的、所以我们要复制一些基础的配置选项进去**nginx.config**```javascript运行nginx的用户
user nginx;
启动进程设置成和CPU数量相等
worker_processes 1;
全局错误日志及PID文件的位置
error_log /var/log/nginx/error.log warn; pid /var/run/nginx.pid;
工作模式及连接数上限
events {
#单个后台work进程最大并发数设置为1024worker_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**````javascriptserver {listen 80; #侦听80端口,如果强制所有的访问都必须是HTTPs的,这行需要注销掉server_name localhost; #域名或IP# 定义首页索引目录和名称location / {root /web/;index index.html index.htm;}#重定向错误页面到 /50x.htmlerror_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/webtouch index.htmlvi index.html//然后在里面随便写一些内容在进行保存:wq //保存//重启docker容器docker restart + 容器ID
然后出去访问自己的IP就能看到你刚刚在index.html的内容啦

**反向代理**
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我在项目中所使用到的点、后期如果还有别的我会继续在上面进行补充
