Docker部署Nginx
前置环境
docker 19.03.13
部署步骤
初始化配置文件
-- 拉取镜像
docker pull nginx:1.19.9
-- 挂载目录:
mkdir -p /home/jamel/docker/software/nginx/conf.d
mkdir -p /home/jamel/docker/software/nginx/html
mkdir -p /home/jamel/docker/software/nginx/logs
准备nginx.conf
vim /home/jamel/docker/software/nginx/nginx.conf
user nginx;
worker_processes 1;
error_log /var/log/nginx/error.log warn;
pid /var/run/nginx.pid;
events {
worker_connections 1024;
}
http {
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 on;
# 关闭nginx版本展示
server_tokens off;
include /etc/nginx/conf.d/*.conf;
}
准备自定义配置文件
vim /home/jamel/docker/software/nginx/conf.d/nlc.conf
server {
listen 80;
server_name 192.168.110.33;
client_max_body_size 50M; # 上传文件大小限制为50M
underscores_in_headers on;
# 指定前端静态页面
location /ui {
proxy_set_header Host $host:$server_port;
proxy_redirect off;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_connect_timeout 60;
proxy_read_timeout 600;
proxy_send_timeout 600;
root /etc/nginx/html/;
}
S
# 指定后端服务转发
location /api/xxx/ {
proxy_pass http://192.168.110.150:9999/;
}
# 网关项目
location /api {
proxy_set_header Host $host:$server_port;
proxy_redirect off;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_connect_timeout 60;
proxy_read_timeout 600;
proxy_send_timeout 600;
proxy_pass http://192.168.110.xx:8088/api;
}
# 共享的资源文件地址(为解决跨域)
location /file/ {
proxy_set_header Host $host:$server_port;
proxy_redirect off;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_connect_timeout 60;
proxy_read_timeout 600;
proxy_send_timeout 600;
proxy_pass http://192.168.110.xx:9000/;
}
}
启动方式:
docker run -d \
-p 80:80 \
--name=nginx-1.19.9 \
--restart=always \
-v /home/jamel/docker/software/nginx/conf.d:/etc/nginx/conf.d \
-v /home/jamel/docker/software/nginx/nginx.conf:/etc/nginx/nginx.conf \
-v /home/jamel/docker/software/nginx/html:/etc/nginx/html \
-v /home/jamel/docker/software/nginx/logs:/var/log/nginx \
nginx:1.19.9
相关
防火墙设置(可选)
systemctl start firewalld
firewall-cmd --zone=public --add-port=80/tcp --permanent
firewall-cmd --complete-reload
设置 html不缓存
server {
listen 80;
listen [::]:80;
server_name localhost;
absolute_redirect off;
client_max_body_size 200m;
location / {
root /usr/share/nginx/html/web;
index index.html index.htm;
if ($request_filename ~* .*\.(?:htm|html)$)
{
add_header Cache-Control "no-cache, no-store";
}
}
}
问题
1.如何查看Nginx日志?
less /home/jamel/docker/software/nginx/logs/error.log
less /home/jamel/docker/software/nginx/logs/access.log
2.Nginx 目前的用途是什么?
做静态资源访问
各个项目的资源访问的反向代理
网关的负载均衡