docker安装nginx并配置nginx.conf

本文详细介绍了如何在Docker中安装Nginx,包括拉取镜像、启动容器并验证运行,以及如何挂载自定义的nginx.conf配置文件。重点讲解了proxy_pass配置的注意事项,即必须使用公网IP而非127.0.0.1,并展示了如何挂载日志目录和静态页面目录。此外,还讨论了Nginx反向代理非80端口的问题,提供了解决方案和静态网页的部署方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

拉取nginx镜像 

docker pull nignx

查看虚拟机内镜像

47bc1f8629ef629859d2d45537a89744b76.jpg

启动nginx看看是否成功

docker run -d --name "nginx" -p 80:80 nginx

启动后打开浏览器访问一下,确认是否可用

接下来我想修改 nginx.conf 配置文件,我们需要把我们自己定义的 nginx.conf挂载在 docker 中的nginx

首先创建挂载目录

mkdir -p /usr/dokcer_nginx_data/{conf,conf.d,html,log}

自定义 nginx.conf 文件

 server {
        listen       80;
        server_name  localhost;

        #charset koi8-r;

        #access_log  logs/host.access.log  main;

        location / {
              proxy_pass http://39.98.173.195:8080/;
              index  dashboard index;
              proxy_set_header Host       $http_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_pass 不能设置为 127.0.0.1,需要设置为公网IP,否则nginx无法识别,目前不知是什么原因,我猜想是docker无法识别127.0.0.1吧

文件创建成功后,上传到 /usr/dokcer_nginx_data/conf 目录下

现在来通过docker重新启动nginx

docker run --name nginx -d -p 80:80  -v /usr/dokcer_nginx_data/conf/nginx.conf:/etc/nginx/nginx.conf  -v /usr/dokcer_nginx_data/log:/var/log/nginx  -v /usr/dokcer_nginx_data/html:/usr/share/nginx/html nginx

第一个-v:挂载nginx的主配置文件,以方便在宿主机上直接修改容器的配置文件

第二个-v:挂载容器内nginx的日志,容器运行起来之后,可以直接在宿主机的这个目录中查看nginx日志

第三个-v:挂载静态页面目录

 b5c2446ed10f3cdf7bf4fa0ccdc0177c194.jpg

nginx反向代理非80端口的问题

以上是代理一个80端口,我们再来反向代理其他端口,例如9090

 

修改 nginx.conf

 server {
        listen       80;
        server_name  localhost;

        #charset koi8-r;

        #access_log  logs/host.access.log  main;

        location / {
              proxy_pass http://39.98.173.195:8080/;
              index  dashboard index;
              proxy_set_header Host       $http_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;
	    } 
}


 server {
        listen       9090;
        server_name  localhost;

        #charset koi8-r;

        #access_log  logs/host.access.log  main;

        location / {
              proxy_pass http://39.98.173.195:8080/;
              index  dashboard index;
              proxy_set_header Host       $http_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;
	    } 
}

 

为了让配置文件生效,重新启动nginx或者删除nginx容器重新创建

测试发现 

 http://39.98.173.195:8080/docker/findUser 可以访问

 http://39.98.173.195:80/docker/findUser 可以访问

http://39.98.173.195:9090/docker/findUser 无法访问

为什么最后一个会无法访问? 原因未知,但是我找到了解决办法

再启动一个nginx容器,注意端口映射

docker run --name nginx1 -d -p 9090:9090  -v /usr/dokcer_nginx_data/conf/nginx.conf:/etc/nginx/nginx.conf  -v /usr/dokcer_nginx_data/log:/var/log/nginx  -v /usr/dokcer_nginx_data/html:/usr/share/nginx/html nginx

 

部署静态网页

把 html 文件放在 /usr/dokcer_nginx_data/html 文件夹下,稍后映射到 nginx 容器中

更新 nginx.conf

	 server {
         listen       8088;
         server_name  localhost;

         location / {
             root   /usr/share/nginx/html/;
             index  index.html index.htm;
         }
     }

启动一个新的 nginx 

docker run --name nginx1 -d -p 8088:8088 -v /usr/dokcer_nginx_data/conf/nginx.conf:/etc/nginx/nginx.conf  -v /usr/dokcer_nginx_data/log:/var/log/nginx  -v /usr/dokcer_nginx_data/html:/usr/share/nginx/html  nginx

打开浏览器访问即可

注意:有的人会遇到监听 80  端口访问 html 时候,报错 404 ,确认配置文件无误后,原因是:

Nginx的docker容器中,有一个默认配置文件 /etc/nginx/nginx.conf 。还有一个默认放配置文件的目录 /etc/nginx/conf.d。nginx 会加载目录conf.d 下的 *.conf 文件。如果这些 .conf 文件的内容和 /etc/nginx/nginx.conf 文件有冲突,那么nginx会默认用 conf.d 目录下的文件配置去覆盖 nginx.conf 文件里面的配置。nginx 容器的 conf.d 目录下有个 default.conf 配置文件。
 

首先 进入容器

docker exec -it  容器ID /bin/bash

158cb3732cce8ae14d05657ea1c6b781096.jpg

删除该文件,重新启动即可

rm default.conf

 

转载于:https://my.oschina.net/u/3387320/blog/3064676

### 回答1: Active Directory域服务是一种由微软公司开发的网络服务,它提供了一种集中管理和控制网络资源的方式。它可以在一个域中集中管理用户、计算机、应用程序和其他网络资源,从而提高了网络的安全性和可管理性。Active Directory域服务还提供了一些高级功能,如单点登录、组策略管理和域名系统(DNS)集成等,使得网络管理员可以更加轻松地管理和维护网络。 ### 回答2: Active Directory域服务(Active Directory Domain Services,简称AD DS)是微软公司的一项用于管理和组织网络资源的目录服务。它是一种基于LDAP(轻量级目录访问协议)的目录服务,可以让用户和管理员方便地管理和访问网络中的资源。 AD DS的主要功能包括用户身份认证、访问控制、组管理和资源管理等。通过AD DS,管理员可以集中管理和配置用户和计算机的访问权限,确保系统安全。同时,AD DS还提供了域的集中管理功能,管理员可以通过域控制器管理域中的所有对象,在域中实施策略。 AD DS还支持单点登录功能,用户只需在登录到域之后,即可自动访问到所属域中的资源,而无需再次输入用户名和密码。这大大提高了用户的工作效率。 此外,AD DS还支持多域架构,可以通过建立信任关系实现跨域资源的访问和管理。管理员可以维护多个域之间的信任关系,实现用户和资源的统一管理。 总而言之,AD DS是一种强大的目录服务,可以实现用户和资源的集中管理和访问控制,提高网络系统的稳定性和安全性。它是企业网络管理的重要组成部分,为企业提供了高效的身份认证和资源管理功能,增强了企业的生产力和安全性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值