1.下载Nginx
#下载nginx
docker pull nginx:latest
2.快速运行Nginx
#运行默认nginx
docker run --name nginx -p 8080:80 -d nginx
3.主要配置文件目录
@进入容器内部查看配置目录
docker exec -it nginx /bin/bash
默认的关键目录位置:
- 主(配置)目录: /etc/nginx
- 页面目录:/usr/share/nginx/html
- 日志目录: /var/log/nginx
将该目录配置拷贝至宿主机,否则只能在内部进行调整,不太方便操作;在宿主机创建nginx的相关配置文件目录
3.1 创建nginx
#创建nginx
1.cd /tmp/
2.mkdir nginx
3.2 拷贝文件
从容器中拷贝相关的主要文件至宿主机
//从容器内copy文件和目录到宿主机
docker cp nginx:/etc/nginx/nginx.conf /tmp/nginx/conf
docker cp nginx:/etc/nginx/conf.d /tmp/nginx/conf
docker cp nginx:/usr/share/nginx/html /tmp/nginx
docker cp nginx:/var/log/nginx /tmp/nginx/log
注意:挂载相关文件及目录应该先从第一次运行的nginx容器中拷贝到宿主机,否则将出现异常:1#1: open() "/etc/nginx/nginx.conf" failed (2: No such file or directory)
nginx: [emerg] open() "/etc/nginx/nginx.conf" failed (2: No such file or directory)
容器内目录原有的东西被外部文件同步覆盖清空了..
3.3 Nginx容器代理SpringBoot容器服务
编辑nginx中的nginx配置文件
user root;
worker_processes 1;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
client_header_buffer_size 256k;
open_file_cache max=102400 inactive=20s;
open_file_cache_valid 30s;
open_file_cache_min_uses 1;
proxy_connect_timeout 300s;
proxy_send_timeout 300s;
proxy_read_timeout 300s;
proxy_buffer_size 256k;
proxy_buffers 8 128k;
proxy_busy_buffers_size 256k;
proxy_temp_file_write_size 256k;
proxy_temp_path html;
map $http_upgrade $connection_upgrade {
default upgrade;
'' close;
}
upstream 代理名称 {
ip_hash;
server 容器名称:端口信息 weight=1;
}
#gzip on; #是否开启压缩
server {
listen 80;
server_name 0.0.0.0;
location / {
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
root html;
index index.html index.htm;
}
location ~ (favicon.ico) {
}
location = /favicon.ico {
return 204;
access_log off;
log_not_found off;
}
location ~/api/ {
if ($request_method = OPTIONS ) {
add_header Access-Control-Allow-Origin *;
add_header Access-Control-Allow-Methods "POST, GET, PUT, OPTIONS, DELETE";
add_header Access-Control-Max-Age "3600";
add_header Access-Control-Allow-Headers "Origin, X-Requested-With, Content-Type, Accept, Authorization";
add_header Access-Control-Allow-Credentials "true";
add_header Content-Length 0;
add_header Content-Type text/plain;
return 200;
}
proxy_pass http://代理名称;
proxy_set_header X-Real-IP $remote_addr;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
}
重启Nginx即可