docker安装nginx 1.27.1

本文介绍用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;
    }

}

结尾:样例小程序二维码,我自己做的一个免费好用的【随机选择决定转盘工具】小程序,欢迎扫码体验呦!

谢谢阅读!~~

<think>我们参考用户的问题和提供的引用内容,用户的问题是:如何在Docker安装和运行Nginx? 根据引用内容,我们可以总结出以下步骤: 1. 拉取Nginx镜像(默认最新版,也可以指定版本) 2. 运行Nginx容器,并配置端口映射和挂载卷(可选,用于配置文件和静态文件) 3. 验证Nginx是否运行成功 我们将按照这些步骤进行说明,并给出相应的命令示例。 同时,我们也会考虑用户可能需要的自定义配置(如修改配置文件、挂载静态文件目录等)。 注意:引用中提到了使用docker-compose的方式(引用[1])和直接使用docker命令的方式(引用[3])。我们将分别说明。 步骤1:拉取Nginx镜像 docker pull nginx # 拉取最新版 或者指定版本:docker pull nginx:1.17 步骤2:运行Nginx容器 有两种方式:直接使用docker命令,或使用docker-compose。 方式一:使用docker命令运行 docker run --name mynginx -p 80:80 -d nginx 参数说明: --name mynginx:为容器指定一个名称 -p 80:80:将主机的80端口映射到容器的80端口(格式:主机端口:容器端口) -d:后台运行 nginx:使用的镜像 如果需要挂载配置文件或静态文件目录,可以使用-v参数: docker run --name mynginx -p 80:80 -v /path/to/conf/nginx.conf:/etc/nginx/nginx.conf -v /path/to/wwwroot:/usr/share/nginx/html -d nginx 注意:nginx的默认静态文件目录在容器内是/usr/share/nginx/html,而配置文件是/etc/nginx/nginx.conf(但实际上nginx的配置包括多个文件,通常我们挂载整个配置目录/etc/nginx/conf.d或者整个/etc/nginx) 方式二:使用docker-compose 创建一个docker-compose.yml文件,内容如下(参考引用[1]并调整): version: '3' services: nginx: image: nginx container_name: mynginx ports: - "80:80" volumes: - ./conf/nginx.conf:/etc/nginx/nginx.conf - ./wwwroot:/usr/share/nginx/html restart: always 然后运行:docker-compose up -d 步骤3:验证 在浏览器中访问 http://localhost 或 http://服务器IP,如果看到Nginx欢迎页面,则说明安装成功。 注意:如果是在远程服务器上,请确保服务器的安全组开放了80端口。 另外,引用[2]中提到了负载均衡和静态文件服务的配置,这些属于Nginx的高级配置,可以在安装完成后通过修改配置文件来实现。 根据用户的问题,我们主要回答安装和运行,因此高级配置不在本次回答中展开。 最后,我们生成相关问题。</think>### 在 Docker安装和运行 Nginx 的步骤 #### 1. **拉取 Nginx 镜像** ```bash docker pull nginx # 默认拉取最新版 ``` 或指定版本(如 1.17): ```bash docker pull nginx:1.17 # 引用[4] ``` #### 2. **运行 Nginx 容器** - **基础运行**(映射主机 80 端口到容器 80 端口): ```bash docker run --name mynginx -p 80:80 -d nginx # 引用[3] ``` - `--name mynginx`:容器名称 - `-p 80:80`:端口映射(`主机端口:容器端口`) - `-d`:后台运行 - **挂载配置文件与静态资源**(推荐): ```bash docker run --name mynginx \ -p 80:80 \ -v /宿主机/nginx.conf:/etc/nginx/nginx.conf \ -v /宿主机/wwwroot:/usr/share/nginx/html \ -d nginx ``` - `-v`:挂载目录(配置文件需提前准备) #### 3. **验证是否运行成功** ```bash curl http://localhost # 应返回 Nginx 欢迎页面 ``` 或浏览器访问 `http://服务器IP`。 --- ### 进阶配置(使用 Docker Compose) 创建 `docker-compose.yml` 文件: ```yaml version: '3.8' services: nginx: image: nginx:latest container_name: mynginx ports: - "80:80" # 暴露端口 volumes: - ./conf/nginx.conf:/etc/nginx/nginx.conf # 挂载配置文件 - ./wwwroot:/usr/share/nginx/html # 挂载静态资源 restart: always # 自动重启 ``` 启动服务: ```bash docker-compose up -d # 引用[1] ``` --- ### 关键目录说明 | **容器内路径** | **作用** | **推荐挂载到宿主机** | |------------------------------|--------------------------|----------------------------| | `/etc/nginx/nginx.conf` | 主配置文件 | `./conf/nginx.conf` | | `/usr/share/nginx/html` | 静态资源目录(网站根目录)| `./wwwroot` | | `/etc/nginx/conf.d/` | 额外配置目录 | `./conf/conf.d/` | > 💡 **提示**: > - 首次运行时,建议先不挂载配置文件,通过 `docker cp mynginx:/etc/nginx/nginx.conf ./conf/` 复制默认配置再修改[^2]。 > - 修改配置后需重启容器:`docker restart mynginx`。 --- ### 常见问题解决 - **端口冲突**: 修改 `-p` 参数(如 `-p 8080:80`),或停止占用端口的进程[^2]。 - **配置文件错误**: 查看日志:`docker logs mynginx`。 - **无法访问服务**: 检查防火墙是否放行端口(如 `ufw allow 80`)[^2]。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

neter.asia

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值