【Nginx】Docker配置ngnix,实现同服务器ip多站点多域名

这篇具有很好参考价值的文章主要介绍了【Nginx】Docker配置ngnix,实现同服务器ip多站点多域名。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

Docker配置ngnix,实现同服务器ip,多域名映射多站点

本文首发于 慕雪的寒舍

1.说明

一般情况下,我们的域名映射到ip后,默认访问的是80端口。如果你的服务器只部署了一个服务,这样也是够用的。

但是很多项目对性能的占用并没有那么夸张,一个服务器一个站点未免有些浪费了。虽然我们可以用域名:端口来访问,但是这样对于用户来说并不友好,对于强迫症来说看着很不舒服🤣

这时候,就需要配置反向代理来实现不同域名到服务器不同端口的映射。

1.1 反向代理

你可以理解为,反向代理是服务器的一个中间商,其能将80端口的,不同域名来源的请求,导向到服务器上的不同端口

www.example.com 指向 8080端口
aaa.example.com 指向 3000端口
这两个域名都映射到服务器公网ip 114.514.8.8

当你访问www.example.com时,请求的是114.514.8.8:80端口,也就是反向代理的服务。此时反向代理能知道你的来源是www.example.com,于是就把你带到了8080端口的服务上;

同理,访问aaa.example.com时,就会被带到3000端口。


这里用nginx作演示,nginx是最常用的反向代理服务

2.docker安装nginx

本文参考:https://www.jianshu.com/p/6b317192480c

用其他方式还得整一大堆依赖项,这里直接用docker,方便又快捷;

服务器安装docker的方式,根据你的系统,自行百度

docker pull nginx

2.1 配置

启动之前,先在你的当前路径下创建一个文件夹(我这里是root用户)

mkdir /root/docker/ngnix

随后用下面的命令启动nginx容器

docker run \
--name=ngx \
-p 80:80 -p 443:443 \
-v /root/docker/nginx/conf.d:/etc/nginx/conf.d \
-v /root/docker/nginx/cert:/etc/nginx/cert \
-d nginx

对一些参数进行说明

  • -p命令映射端口,将80端口映射给服务器的80端口(右侧容器端口,左侧本地端口
  • -v命名映射目录,将本地的/root/nginx/conf.d映射到docker里面的/etc/nginx/conf.d 这是nginx的配置文件路径
  • --name设置容器的名字,和镜像名字无关

安装完成后,打开云服务器的ip,就能看到nginx的初始页面

【Nginx】Docker配置ngnix,实现同服务器ip多站点多域名

3.编辑配置文件

nginx.conf 配置文件我们直接用官方默认的就行,这里主要对站点的配置文件做说明;

3.1 https

如果不需要https加密,可以用下面的配置文件来操作,当使用test.com访问你的云服务器ip时,会被转到4000端口

server {
    listen 80;  # 监听80端口
    server_name test.com;  # 自己的域名
    
    location / {
		# 设置缓冲区大小
		proxy_buffer_size 64k;
        proxy_buffers   32 32k;
        proxy_busy_buffers_size 128k;
		
        proxy_set_header HOST $host;
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
		# 需要代理的地址:端口(因为是docker部署的,需要填公网ip)
        proxy_pass http://IP:4000;
    }
}

3.1.1 关于proxy_pass

这里必须要注意一下proxy_pass

因为我们的nginx是用docker部署的,此时你填 127.0.0.1或localhost,实际上访问的都是nginx这个docker内部的端口,是没有用的,会弹出502 gateway报错!

正确的办法就是填云服务器的公网ip+端口

3.2 https

配置https如下,这样配置会将80端口的http访问强制转成https

域名的证书可以在域名提供商里面申请,腾讯云支持申请单域名1年的免费证书。还可以去joyssl,申请90天的域名通配符证书

因为在启动docker容器的时候,我配置了路径映射,证书配置的cert/对应的其实是 /root/docker/nginx/cert/目录,将证书文件放到该目录下即可

server {
    listen 443 ssl;
    server_name img.text.top;  # 域名
    # 注意文件位置,是从/etc/nginx/下开始算起的
    ssl_certificate cert/img.text.top.crt; # 域名证书文件crt
    ssl_certificate_key cert/img.text.top.key; # 域名证书key
    ssl_session_timeout 5m;
    ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
    ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;
    ssl_prefer_server_ciphers on;

    client_max_body_size 1024m;

    location / {
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header Host $host;
        proxy_set_header Upgrade-Insecure-Requests 1;
        proxy_set_header X-Forwarded-Proto https;

        # 因为是docker部署的nginx,所以要填云服务器公网ip
        proxy_pass http://云服务器公网IP:端口;
    }
}
# 强制重定向
server {
    listen 80; # 监听80端口
    server_name img.text.top;  # 域名
    #把http的域名请求转成https
    return 301 https://$host$request_uri; 
}

修改配置文件后重启nginx的容器,即可正常访问


更多:用portainer管理docker

portainer是一个图形化管理docker镜像和容器的项目,还是很不错的;缺点就是只有英文,想要中文可以配置中文包,但是中文包已经非常非常久没有更新了,索性直接用英文版文章来源地址https://www.toymoban.com/news/detail-477662.html

docker run -p 14730:9000 -p 14729:8000 --name portainer \
--restart=always \
-v /var/run/docker.sock:/var/run/docker.sock \
-v /root/docker/portainer/data:/data \
-d portainer/portainer

到了这里,关于【Nginx】Docker配置ngnix,实现同服务器ip多站点多域名的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 阿里云服务器docker配置实现NAS/webdav访问

    最终踩雷是 未设置端口 (第四点),公网IP访问始终没有响应,在此感谢以下四位作者 1、NAS访问阿里云 使用阿里云盘打造免费 WebDAV 服务 nas访问阿里云 plex挂载阿里云访问_NAS存储_什么值得买 2、阿里云本地访问 zotero+阿里云盘+aliyun driver 实现文献管理云存储_北边颇有心气儿

    2024年02月12日
    浏览(25)
  • 具有公网IP的服务器作为代理服务器,并使用Nginx将内网服务器反向代理

    在代理服务器上安装Nginx。如果您正在使用Linux操作系统,则可以使用包管理器来安装Nginx。例如,如果您使用的是Ubuntu,可以使用以下命令安装: 配置Nginx以将HTTP和HTTPS请求转发到内部服务器。打开Nginx的主配置文件/etc/nginx/nginx.conf,并在http块中添加以下代码: 注意: 将

    2024年01月25日
    浏览(33)
  • Nginx禁止/屏蔽攻击服务器的IP地址

    nginx安装在IP为x.x.x.x的服务器上 第一步,nginx安装。 第二步,nginx配置。 第三步,nginx启动和访问站点。 第四步,nginx服务关闭和重启。 第五步,新建nginx启动脚本可以不进入nginx根目录即可进行相应的操作,设置服务器重启时nginx会自动启动。 第一步,在/etc/nginx文件夹中新

    2024年02月06日
    浏览(40)
  • [Docker实现测试部署CI/CD----相关服务器的安装配置(2)]

            Jenkins 是一个开源软件项目,是基于 Java 开发的一种持续集成工具,用于监控持续重复的工作,旨在提供一个开放易用的软件平台,使软件项目可以进行持续集成。 下载Linux版本的jdk,解压到/usr/local目录 进入 /etc/profile 目录,设置环境变量 刷新配置文件,输入

    2024年02月14日
    浏览(37)
  • [Docker实现测试部署CI/CD----相关服务器的安装配置(1)]

    CI,Continuous Integration,持续集成。即将持续不断更新的代码经构建、测试后也持续不断的集成到项目主干分支。 CD,包含两层含义:Continuous Delivery,持续交付,和 Continuous Deployment,持续 部署。 持续交付:是持续集成的后续步骤,持续频繁地将软件的新版本交付到类生产环境

    2024年02月14日
    浏览(37)
  • nestjs:nginx反向代理服务器后如何获取请求的ip地址

    问题:         如题 参考:         nodejs+nginx获取真实ip-腾讯云开发者社区-腾讯云         「转」从限流谈到伪造 IP nginx remote_addr          解决办法: 1.设置nginx         对于代理部分,对http header添加Host、X-Real-IP、X-Forwarded-For(最重要)          2.nestjs使用

    2024年02月13日
    浏览(46)
  • 服务器上配置nginx

    如何在 Ubuntu 20.04 上安装 Nginx - 知乎 (zhihu.com) 就像是在本机进行下载配置一般,成功后你自己可以通过浏览器输入网址访问,本地环回地址或者连接上互联网后的ip地址(那么处于同一局域网的其他设备也可以访问)。 在本机部署tomcat也是同理。 那么什么情况下可以让互联网

    2024年04月09日
    浏览(60)
  • 【Docker】使用 Docker 主机启动 Nginx 服务器的步骤详解

    在本文中,我们将介绍如何使用Docker在主机上启动Nginx服务器。Nginx是一个高性能的HTTP和反向代理服务器,经常用于托管网站和Web应用。通过Docker,我们可以轻松地部署和管理Nginx服务器,使得整个过程变得简单而高效。 步骤一:安装Docker 首先,确保您的主机上已经安装了

    2024年04月26日
    浏览(29)
  • 如何在虚拟专用服务器上配置 Nginx Web 服务器

    本文档涵盖的是不再受支持的 Ubuntu 版本。如果您目前正在运行 Ubuntu 12.04 服务器,我们强烈建议升级或迁移到受支持的 Ubuntu 版本: 升级到 Ubuntu 14.04 从 Ubuntu 14.04 升级到 Ubuntu 16.04 将服务器数据迁移到受支持的版本 原因: Ubuntu 12.04 已于 2017 年 4 月 28 日到达生命周期终点(

    2024年04月27日
    浏览(32)
  • 【模板】Hexo Docker Nginx 个人博客服务器部署

    上文:基于 Hexo 的 Github 博客搭建 注意:通过验证部署,确定无误。AI生成的部分有🤖图标。 本指南提供了在服务器上设置Git仓库、将本地Hexo页面推送到服务器仓库、在服务器上创建Nginx配置文件以及在服务器上运行Nginx容器的方法。 在服务器上的指定路径下运行git init初始

    2024年02月01日
    浏览(42)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包