前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Nginx代理HTTPS到Docker指定端口

Nginx代理HTTPS到Docker指定端口

作者头像
凝神长老
发布于 2020-04-17 03:45:33
发布于 2020-04-17 03:45:33
1.8K00
代码可运行
举报
运行总次数:0
代码可运行

假设我在服务器上的 Docker 运行了一个应用,在 Docker 启动的时候,我指定他监听了 localhost 的 9000 端口,定向到 Docker 的 9002 的应用上。

那么,这个应用就是运行在了 Docker 的 9002 端口上、监听者 9000 端口,我只需要访问 localhost:9000 就可以使用这个应用。

现在把问题再复杂化一点:我有一个域名 test.jxtxzzw.com,一个 SSL 证书

我现在想要访问 https://test.jxtxzzw.com 就可以访问这个应用,例如这是一个云盘的应用,那么我在访问了上面这个网址的时候,就可以使用了。

同时,这一台服务器上还运行着其他的应用,假设有博客、私有代码仓库等等。

首先明确,直接访问 http://test.jxtxzzw.com:9000 或者 http://111.222.111.222:9000 是可以的,但是 https://test.jxtxzzw.com:9000 是不行的(而且带着端口号不好看)。

由于我的服务器是 LNMP 环境的,所以可以使用 Nginx 反向代理到 Docker 的指定端口。

继续阅读这篇文章之前,您最好需要熟练掌握配置 Nginx 虚拟主机的基本知识,或者说至少已经使用过几个虚拟主机的配置文件并在带有注释的情况下能看懂绝大多数配置项的含义。

具体配置如下。

首选确认 /usr/local/nginx/conf/nginx.conf 里面启用了 MIME 的支持。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
include       /etc/nginx/mime.types;

然后,我们在虚拟主机的配置文件(/usr/local/nginx/conf/vhost/test.jxtxzzw.com.conf)里面加上:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
default_type  application/octet-stream;
 
upstream  test.jxtxzzw.com  {
    server   localhost:9000;
}

然后首先配置 HTTP 访问。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# http
server
{
    listen  80;
    server_name  test.jxtxzzw.com;
 
    # Force redirect to https
    # If you dont want https force redirect, comment out the rewrite line 
    rewrite ^/(.*) https://$server_name/$1 permanent;
 
    location / {
        proxy_pass        http://test.jxtxzzw.com;
        proxy_set_header   Host             $host;
        proxy_set_header   X-Real-IP        $remote_addr;
        proxy_set_header   X-Forwarded-For  $proxy_add_x_forwarded_for;
    }
}

这里的关键是 4 个 proxy。

然后是 HTTPS 访问。也是一样的,只是监听端口变成了 443,然后需要指定 SSL(.crt 或者 .pem)。当然,还可以进行更多的 SSL 的配置,比如 session timeout 等。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
ssl_session_timeout 5m;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_prefer_server_ciphers on;
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;

proxy_pass 还是到 HTTP,不需要 https://test.jxtxzzw.com

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# https
server
{
    listen  443 ssl;
    server_name  test.jxtxzzw.com;
    ssl_certificate     /home/wwwcert/test.jxtxzzw.com.pem; # .crt or .pem
    ssl_certificate_key /home/wwwcert/test.jxtxzzw.com.key;
    location / {
        proxy_pass        http://test.jxtxzzw.com;
        proxy_set_header   Host             $host;
        proxy_set_header   X-Real-IP        $remote_addr;
        proxy_set_header   X-Forwarded-For  $proxy_add_x_forwarded_for;
    }
}

你已经发现了,本质上,这是利用了 Nginx 的负载均衡,有点杀鸡用牛刀的感觉。

但是问题不大,只有一台服务器的话,那就是 100% 负载了嘛。

了解更多 Nginx 负载均衡的配置,请自行谷歌。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-05-08,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 凝神长老和他的朋友们 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
PHP错误异常处理详解
异常处理(又称为错误处理)功能提供了处理程序运行时出现的错误或异常情况的方法。
黄规速
2022/04/14
2.1K0
理解Laravel中的异常处理
异常处理是Web应用程序开发的一个关键方面,它确保应用程序可以优雅地处理意外错误并为用户提供有意义的响应。Laravel提供了一个强大的异常处理系统,允许您有效地管理错误。在本文中,我们将探索Laravel中异常处理的基本原理,涵盖关键概念。
Tinywan
2024/06/18
3940
理解Laravel中的异常处理
PHP 中的错误处理与异常捕获
在开发任何应用时,错误是不可避免的。无论是由于程序逻辑错误、数据库故障、外部接口问题,还是用户输入不符合预期,错误都会影响应用的正常运行和用户体验。在 PHP 中,处理这些错误的方式至关重要,它直接关系到系统的健壮性、可维护性和可调试性。
繁依Fanyi
2025/01/22
4460
Laravel Exceptions——异常与错误处理
本文 GitBook 地址:https://legacy.gitbook.com/book/leoyang90/laravel-source-analysis/details
码农编程进阶笔记
2021/07/20
2.1K0
Laravel Exceptions——异常与错误处理
ASP.NET Core 错误处理(Handle Errors)
链接:cnblogs.com/xiaoxiaotank/p/15586706.html
郑子铭
2021/12/01
2.2K0
ASP.NET Core 错误处理(Handle Errors)
PHP中常见的错误与异常处理总结大全
前言 当我们开发程序时,程序出现问题是很常见的,当出现了异常与错误我们该如何处理呢?本文将详细给大家介绍PHP错误与异常处理的相关内容,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍: 一、PHP错误处理 1.语法错误
用户2323866
2021/07/01
7190
Webman实战教程:Exception异常插件如何解决开发中的异常问题
是程序在运行中出现不符合预期的情况及与正常流程不同的状况。一种不正常的情况,按照正常逻辑本不该出的错误,但仍然会出现的错误,这是属于逻辑和业务流程的错误,而不是编译或者语法上的错误。
Tinywan
2023/10/22
6970
Webman实战教程:Exception异常插件如何解决开发中的异常问题
【Laravel系列7.2】错误与异常处理
在学习完 Laravel 中的日志处理模块之后,接下来马上就进入到错误和异常的学习中。其实通过之前 PHP 基础相关的学习,我们已经了解到 PHP7 中的大部分错误都已经可以通过异常来进行处理了,而我们的 Laravel 框架,基本全是通过异常来进行处理的。
硬核项目经理
2023/03/03
3K0
【Laravel系列7.2】错误与异常处理
PHP 错误和异常处理(下)
上篇我们讲了 PHP 中的错误报告和捕获,今天,我们来看看 PHP 程序中的异常处理。
学院君
2020/07/24
1.1K0
PHP 错误和异常处理(下)
PHP错误处理和调试(一)
当PHP脚本出现错误时,默认情况下,PHP会在浏览器上输出错误信息。这种方式对于开发环境很有用,但在生产环境中,最好将错误信息记录在日志文件中,而不是在浏览器上输出。
堕落飞鸟
2023/04/27
5060
Spring | 如何在项目中优雅的处理异常 - 全局异常处理以及自定义异常处理
在快速迭代和持续交付的今天,软件的健壮性、可靠性和用户体验已经成为区别成功与否的关键因素。特别是在Spring框架中,由于其广泛的应用和丰富的功能,如何优雅地处理异常就显得尤为重要。本文旨在探讨在Spring中如何更加高效、准确和优雅地处理异常,帮助开发者更好地构建和维护Spring应用。
kfaino
2023/09/26
4.1K0
Spring | 如何在项目中优雅的处理异常 - 全局异常处理以及自定义异常处理
「IM系列」WebSocket教程:响应格式规范与异常处理
PHP中的异常的独特性,即PHP中的异常不同于主流语言C++、java中的异常。在Java中,异常是唯一的错误报告方式,而在PHP中却不是这样,而是把所有不正常的情况都视作了错误进行处理。这两种语言对异常和错误的界定存在分歧。什么是异常什么是错误,两种语言的设计者存在不同的观点。
Tinywan
2023/12/04
4190
「IM系列」WebSocket教程:响应格式规范与异常处理
【译】现代化的PHP开发--异常Exception
自PHP 5发布以来,异常(Exception)已作为面向对象的编程语言功能添加到PHP。根据定义,异常是程序执行期间的异常事件。在PHP中,Exception只是一个对象(Exception类的实例)。当发生异常时,PHP将暂停当前的执行流程并寻找一个处理程序,然后它将根据处理程序的代码继续执行。如果未找到任何处理程序,则将发出PHP致命错误,并显示“未捕获的异常...”消息,程序将终止。
Lemon黄
2019/10/14
1.3K0
【译】现代化的PHP开发--异常Exception
Java编程思想之通过异常处理错误
1.     异常分为被检查的异常和运行时异常,被检查的异常在编译时被强制要求检查。异常被用来错误报告和错误恢复,但很大一部分都是用作错误报告的。
用户3148059
2018/09/03
6670
Java编程思想之通过异常处理错误
编程思想 之「异常及错误处理」
在 Java 的异常及错误处理机制中,用Throwable这个类来表示可以作为异常被抛出的类。Throwable对象可以细分为两种类型(指从Throwable继承而得到的类型),分别为:
CG国斌
2018/03/22
1.5K3
编程思想 之「异常及错误处理」
php错误处理和异常处理
Error 层次结构 - Throwable (php7) - Error - ArithmeticError - DivisionByZeroError - AssertionError - CompileError - ParseError - TypeError - ArgumentCountError - Exception ... 什么是php错误? 属于php脚本自身的问题,大部分情况是由错误的语法,
友儿
2022/09/11
1.1K0
PHP 错误和异常处理(上)
在 PHP 5 中,程序错误会被划分为多种级别:https://www.php.net/manual/zh/errorfunc.constants.php,然后可以通过 error_reporting 函数设置报告的错误级别:
学院君
2020/07/24
6940
PHP 错误和异常处理(上)
重学SpringBoot系列之统一全局异常处理
答:因为用户不认识ConnectionTimeOutException类似这种异常是什么东西,但是转换为自定义异常就要求程序员对运行时异常进行一个翻译,比如:自定义异常里面应该有message字段,后端程序员应该明确的在message字段里面用面向用户的友好语言,说明服务端发生了什么。
大忽悠爱学习
2021/12/07
1.1K0
重学SpringBoot系列之统一全局异常处理
JavaScript中的错误处理机制
在写代码的时候,避免不了遇到各种各样的错误,遇到错误,BUG,我们需要尽快的解决,才能不拖累工作的进度,我们一般都会百度错误如何解决,但是遇到一些针对性错误以及百度方法不管用的情况下,就需要了解错误处理机制了。
刘亦枫
2020/03/19
2.1K0
php 抛出异常使用场景
注释:异常应该仅仅在错误情况下使用,而不应该用于在一个指定的点跳转到代码的另一个位置。
全栈程序员站长
2022/07/19
2K0
推荐阅读
相关推荐
PHP错误异常处理详解
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档