1.21、查看可用的Nginx版本
访问Nginx镜像库地址:https://hub.docker.com/_/nginx
2、拉取指定版本的Nginx镜像
docker pull nginx:latest #安装最新版
docker pull nginx:1.25.3 #安装指定版本的Nginx
3、查看本地镜像
docker images
4、根据镜像创建并运行容器
docker run -d --name=mynginx -p 8099:80 -d nginx:latest
5、安装成功:
在浏览器中访问 192.168.43.10:8099 访问Nginx页面192.168.43.10是我们虚拟机的静态IP地址
6、通过以下命令执行一个新的容器,进入正在运行的Nginx容器:
docker exec -it mynginx /bin/bash #mynginx是你nginx的容器名称
7、在容器内,使用以下命令查看Nginx版本:
命令:nginx -v #查看nginx版本
命令:exit #退出容器
8、nginx.conf的配置
# 根据系统资源情况设置worker进程数量:这里设置为2,如果想根据系统资源情况自动设置worker进程数量:worker_processes auto;
worker_processes 2;
# 指定错误日志的位置
error_log logs/error.log;
# 指定 nginx 的主进程 ID 存储位置
pid logs/nginx.pid;
# events 块定义了事件模型和连接数配置
events {
use epoll;
worker_connections 2048;
}
# http 块是 nginx 配置的主要部分,包含了 http 相关的配置
http {
# 引入 mime.types 文件,该文件定义了 MIME 类型映射
include mime.types;
# 设置默认 MIME 类型为 application/octet-stream
default_type application/octet-stream;
# 设置日志格式 main,记录客户端访问日志
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 logs/access.log main;
# 开启 sendfile 功能,提高文件传输性能
sendfile on;
# 如果客户端连接非常快速,则可能启用 tcp_nopush,否则请注释掉此行
# tcp_nopush on;
# 客户端与服务器之间的连接保持时间,超过这个时间将会自动关闭连接
keepalive_timeout 65;
# gzip压缩功能设置:如果不需要开启 gzip 压缩功能,可以将此行注释
gzip on;
gzip_min_length 1k;
gzip_buffers 4 16k;
gzip_http_version 1.0;
gzip_comp_level 6;
gzip_types text/html text/plain text/css text/javascript application/json application/javascript application/x-javascript application/xml;
gzip_vary on;
# http_proxy 设置
client_max_body_size 10m;
client_body_buffer_size 128k;
proxy_connect_timeout 75;
proxy_send_timeout 75;
proxy_read_timeout 75;
proxy_buffer_size 4k;
proxy_buffers 4 32k;
proxy_busy_buffers_size 64k;
proxy_temp_file_write_size 64k;
# 设定负载均衡后台服务器列表
upstream target_servers {
server 192.168.43.218:8099;
server 192.168.43.219:8099;
server 192.168.43.220:8099;
}
# 很重要的虚拟主机配置
server {
listen 80;
server_name itoatest.example.com;
root /apps/oaapp;
charset utf-8;
access_log logs/host.access.log main;
# 我们的静态资源一般都是css、js、html、图片、字体等资源,像这类资源请求我们可以在nginx中使用后缀匹配的方式来路由;
# 静态资源路由
location ~* .(css|js|html|xhtml|gif|jpg|jpeg|png|ico)$ {
root /usr/share/nginx/html;
index index.html index.xhtml;
}
# 上面我们已经把静态资源全部处理完毕,那么剩下的就是动态请求了;另外我们还需要配置nginx把该动态请求路由到哪个目标服务上去;
# 假如我们的目标服务为http://192.168.43.8099 那么下面的代码设置为:proxy_pass http://192.168.43.8099;
# 假如我们的目标服务为集群部署 那么下面的代码设置为:proxy_pass http://target_servers;
# 动态请求
location / {
proxy_pass http://target_servers;
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Scheme $scheme;
}
}
}