本文介绍用docker安装nginx 1.27.1供大家参考
拉取镜像
(具体版本可以去docker hub查找需要的版本,以下以1.27.1为例)
docker pull nginx:1.27.1
拉取后查看镜像
docker images
创建nginx.conf
创建nginx.conf文件放在主机/docker-nginx/conf/下面。不然后面启动docker容器的话会找不到文件挂载启动失败。
# (如下配置中 如果要改成ip访问就要把default.conf配置中的第一个server去掉 还有就是吧域名换成ip)
#主模块指令,指定Nginx Worker进程运行用户以及用户组
#user nginx;
#主模块指令,指定Nginx要开启的进程数,建议设置成和cpu的数量相等
worker_processes 1;
#error_log logs/error.log;
#error_log logs/error.log notice;
#error_log logs/error.log info;
#pid logs/nginx.pid;
#事件指令,设定Nginx的工作模式及连接数上限
events {
#指定Nginx的工作模式;Nginx工作模式:select、poll、kqueue、epoll、rtsig和/dev/poll
#use epoll; #epoll工作模式是首选
#定义Nginx每个进程的最大连接数,默认是1024
worker_connections 1024;
}
#HTTP服务器配置
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 logs/access.log main;
sendfile on;
#tcp_nopush on;
#keepalive_timeout 0;
keepalive_timeout 65;
#gzip on;
include /etc/nginx/conf.d/*.conf; #注意:记得写镜像对应的路径
}
创建并运行容器
mkdir -p /docker-nginx/{conf,conf.d,html,logs,ssl}
docker run \
--name nginx-container \
-p 80:80 \
-p 443:443 \
-v /docker-nginx/conf/nginx.conf:/etc/nginx/nginx.conf \
-v /docker-nginx/conf.d:/etc/nginx/conf.d \
-v /docker-nginx/html:/usr/share/nginx/html \
-v /docker-nginx/logs:/var/log/nginx \
-v /docker-nginx/ssl:/etc/nginx/ssl \
--privileged=true \
-d \
nginx:1.27.1
这个时候nginx就启动成功了,但是不能访问,要配置访问端口服务
新建default.conf
新建default.conf文件放在主机/docker-nginx/conf.d目录下:
#server虚拟主机配置
server {
#监听端口号
listen 80;
#域名:可有多个 支持种类:通配符名称、正则表达式名称、IP、localhost
server_name www.xxxxx.asia www.xxxxx.asia;
#charset koi8-r;
#access_log logs/host.access.log main;
#rewrite ^(.*)$ https://$host$1 permanent; # 强制https
#location URL匹配配置
#配置根目录转发到本机目录位置
location / {
root /usr/share/nginx/html; #注意:记得写镜像对应的路径,可别写卷物理路径
index index.html;
}
#开启error_page
error_page 404 /404.html;
location = /404.html {
root /usr/share/nginx/html; # 在此目录下添加自定义的404.html
}
location ~ .*\.(gif|jpg|jpeg|png)$ {
root /usr/share/nginx/html;
}
}
重启容器生效
docker restart nginx-container
这就可以访问http://localhost/
配置SSL https
把证书www.xxxxx.asia.pem和www.xxxxx.asia.key文件放在主机/Users/neter/Desktop/docker-nginx/ssl目录下:
在default.conf中加入
server {
listen 443 ssl;
server_name www.xxxxx.asia www.xxxxx.asia; #域名
# 增加ssl (默认会添加 /etc/nginx/ )
ssl_certificate ssl/www.xxxxx.asia.pem;
ssl_certificate_key ssl/www.xxxxx.asia.key;
ssl_session_cache shared:SSL:1m;
ssl_session_timeout 5m;
ssl_ciphers HIGH:!aNULL:!MD5;
ssl_prefer_server_ciphers on;
add_header 'Access-Control-Allow-Origin' '*';
#允许跨域请求的方法
add_header 'Access-Control-Allow-Methods' 'GET,POST,PUT,DELETE,OPTIONS';
#允许跨域请求的头字段
add_header 'Access-Control-Allow-Headers' 'Content-Type, Authorization';
#允许在预检请求中携带凭据(例如,cookie)
add_header 'Access-Control-Allow-Credentials' 'true';
#预检请求的有效期(以秒为单位)
add_header 'Access-Control-Max-Age' '3600';
location / {
root /usr/share/nginx/html; #注意:记得写镜像对应的路径,可别写卷物理路径
index index.html;
}
}