安装Nginx
下载Nginx镜像
docker pull nginx:latest
下载最新版本的nginx的镜像
运行nginx镜像
docker run --name nginx -p 80:80 -d nginx
-
参数详解
-
--name nginx 指定容器的名称
-
-p 80:80 映射端口
-
-d 守护进程运行
-
从nginx容器中映射核心文件
- 1、本地创建文件目录
mkdir -p /opt/docker/nginx/conf.d
mkdir -p /opt/docker/nginx/html
mkdir -p /opt/docker/nginx/logs
mkdir -p /opt/docker/nginx/conf/nginx.conf
- 2、拷贝nginx容器对应的文件默认配置
docker cp nginx:/etc/nginx/nginx.conf /opt/docker/nginx/conf/nginx.conf
docker cp nginx:/etc/nginx/conf.d /opt/docker/nginx/conf.d
docker cp nginx:/usr/share/nginx/html /opt/docker/nginx
- 3、停止并删除nginx容器
docker stop nginx
docker rm nginx
重新启动nginx镜像重新新容器
docker run -p 80:80 --name nginx --restart=always
-v /opt/docker/nginx/conf/nginx.conf:/etc/nginx/nginx.conf \
-v /opt/docker/nginx/conf.d:/etc/nginx/conf.d \
-v /opt/docker/nginx/html:/usr/share/nginx/html \
-v /opt/docker/nginx/logs:/var/log/nginx \
-d nginx
nginx基本配置
请求代理
location /test/ {
proxy_pass http://127.0.0.1:8888/;
proxy_read_timeout 90;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection $http_connection;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_cache_bypass $http_upgrade;
}
请求 http://127.0.0.1/test/index.html 会代理到 http://127.0.0.1:8888/index.html
ssl证书配置
- 检查ssl是否安装
/usr/local/nginx/sbin/nginx -V
- 配置nginx.conf
server {
# 服务器端口使用443,开启ssl, 这里ssl就是上面安装的ssl模块
listen 443 ssl;
# 填写绑定证书的域名 ,多个以空格分开
server_name <a href="https://www.aliyun.com/minisite/goods?userCode=veyumm2k" target="_blank">hack520.com</a> <a href="https://www.aliyun.com/minisite/goods?userCode=veyumm2k" target="_blank">www.hack520.com</a>;
# ssl证书地址
ssl_certificate /usr/local/nginx/cert/ssl.pem; # pem文件的路径
ssl_certificate_key /usr/local/nginx/cert/ssl.key; # key文件的路径
# ssl验证相关配置
ssl_session_timeout 5m; #缓存有效期
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4; #加密算法
ssl_protocols TLSv1 TLSv1.1 TLSv1.2; #安全链接可选的加密协议
ssl_prefer_server_ciphers on; #使用服务器端的首选算法
}
http强转https
server {
listen 80;
server_name www.test.com;
default_type 'text/html';
charset utf-8;
rewrite ^/(.*) https://$server_name/$1 permanent; #跳转到Https
}
查看当前nginx的状态
location /status {
stub_status on;
access_log /var/log/nginx/status.log; #日志
}
配置好并重启 可以通过 http://127.0.0.1/status 来查看当前nginx的状态
代理静态文件(如图片)
location /a/b/ {
root /opt/docker/nginx/;
}
如访问 http://127.0.0.1/a/b/test.png 实际是会代理到 /opt/docker/nginx/a/b目录下的test.png
静态页面代理
location /hello/ {
index index.html;
root /opt/docker/nginx/html/;
}
访问 http://127.0.0.1/hello/ 会代理到**/opt/docker/nginx/html/路径下的index.html**页面
配置跨域
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Real-Port $remote_port;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
设置最大body的大小
如上传文件,指定最大的文件大小
client_max_body_size 50m;
设置请求头的大小
server_names_hash_bucket_size 256;
client_header_buffer_size 256k;
large_client_header_buffers 4 256k;
客户端保持连接的时间
keepalive_timeout 60s;