【docker启动nginx】

docker启动nginx

nginx一般用做web服务器,一般为了公网访问需要申请https证书,并进行配置,本次自己制作证书。
使用容器后,需要考虑网络以及配置和日志的持久化,本次复用宿主机网络,生产环境一般来说做端口映射。
集群一般在前置添加负载均衡即可。

1. 抓取镜像并生成目录

docker pull nginx:1.21.6 &&
mkdir -p /home/nginx/conf &&
mkdir -p /home/nginx/logs &&
mkdir -p /home/nginx/ssl &&
mkdir -p /home/nginx/conf/conf.d

2. 生成自签名证书(生产环境需要到CA申请)

2.1 首先将openssl拷贝到nginx/ssl目录

cp /etc/pki/tls/openssl.cnf /home/nginx/ssl

2.2 编辑 openssl.cnf

vi /home/nginx/ssl/openssl.cnf
[ req ] req_extensions = v3_req  //取消对应的注释 

2.3 生成证书

cd /home/nginx/ssl &&
openssl req -x509 -nodes -days 36500 -newkey rsa:2048 -config openssl.cnf -extensions v3_req -keyout /home/nginx/ssl/nginx.key -out /home/nginx/ssl/nginx.crt

上面的证书生成命令请依次输入口令:XX XX XX XX XX (回车) (回车)

cp /home/nginx/ssl/nginx.crt /home/nginx/ssl/space.crt &&
cp /home/nginx/ssl/nginx.key /home/nginx/ssl/space.key

3. 生成Nginx basic认证密码

3.1 安装httpd工具

yum install httpd-tools -y

3.2 生成密码文件

htpasswd -c -d /home/nginx/conf/conf.d/admin_pwd admin

然后输入16位随机密码

注意:如果要删除密码文件:htpasswd -D -d /home/nginx/conf/conf.d/admin_pwd admin

3.3 配置密码文件

tee /home/nginx/conf/conf.d/admin_pwd.config <<-'EOF'
auth_basic           "login";
auth_basic_user_file /etc/nginx/conf.d/admin_pwd;
EOF

4. 配置Nginx

4.1 生成nginx.conf文件

tee  /home/nginx/conf/nginx.conf <<-'EOF'
user  nginx;
worker_processes  auto;
worker_cpu_affinity auto;

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;

    client_max_body_size    200m;

    sendfile        on;
    #tcp_nopush     on;

    keepalive_timeout  65;
proxy_connect_timeout 1s;

    #gzip  on;

    root /usr/share/nginx/html;

    proxy_http_version 1.1;
    proxy_set_header Host $http_host;
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection "upgrade";
    proxy_set_header X-Forwarded-For $remote_addr;  #如果不是第一层Nginx代理(例如学校防火墙就是Nginx代理),则要配置为$proxy_add_x_forwarded_for;

    include /etc/nginx/conf.d/*.conf;

server_tokens off;
}

EOF

4.2 生成default.conf(包含各个server块,每个server块监听指定的server_name和port)


                
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值