当前位置: 首页 > 面试题库 >

为Express和Nginx配置HTTPS

周奇文
2023-03-14
问题内容

我正在尝试为https连接配置ExpressJS应用。Express服务器在localhost:8080和安全的一个localhost:8443上运行。

这是与https相关的server.js代码:

var app = express();

var https = require('https');

const options = {
    cert: fs.readFileSync('/etc/letsencrypt/live/fire.mydomain.me/fullchain.pem'),
    key: fs.readFileSync('/etc/letsencrypt/live/fire.mydomain.me/privkey.pem')
};

app.listen(8080, console.log("Server running"));
https.createServer(options, app).listen(8443, console.log("Secure server running on port 8443"));

这是我的Nginx配置:

server {
    listen 80;
    listen [::]:80;
    server_name fire.mydomain.me;

    location / {
        proxy_pass http://localhost:8080;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection 'upgrade';
        proxy_set_header Host $host;
        proxy_cache_bypass $http_upgrade;
    }
}

server {
    listen 443;
    listen [::]:443;
    server_name fire.mydomain.me;
    location / {
        proxy_pass https://localhost:8443;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection 'upgrade';
        proxy_set_header Host $host;
        proxy_cache_bypass $http_upgrade;
    }
}

我做了什么 :

  • 使用Letsencrypt certonly工具为域fire.mydomain.me生成SSL证书。
  • 配置nginx。
  • 配置server.js节点应用程序
  • 在Ufw中为443端口添加TCP规则。

我试过了

  • 注释server.js中的not-ssl服务器行以强制连接通过ssl配置:当我尝试转到fire.mydomain.me:443而不是“ https:// fire.mydomain。我”。在两种情况下都没有SSL。尝试访问https:// fire.mydomain.me时,会在Google Chrome浏览器中生成此消息“此网站不提供安全连接”。

  • 我首先按照本教程设置了ssl节点配置:https : //medium.com/@yash.kulshrestha/using-lets-encrypt-with-express-e069c7abe625#.93jgjlgsc


问题答案:

您无需在运行于同一主机上的nginx反向代理和Node应用之间使用HTTPS。您可以将对端口80的HTTP请求和对端口443的HTTPS请求都代理到您的Node应用html" target="_blank">程序中的同一端口(在这种情况下为8080),并且在这种情况下无需配置TLS证书。

您可以将server.js文件更改为:

var app = express();

app.listen(8080, console.log("Server running"));

并使用proxy_pass http://localhost:8080;同时在端口80和HTTPS在端口443上都具有的nginx配置。

通常是这样的。在回送接口上对流量进行加密不会增加任何安全性,因为要嗅探流量,您需要对该设备具有root权限,当您拥有该权限时,您可以阅读证书并始终对流量进行解密。考虑到https://nodejs.org/en/blog/vulnerability/上的大多数帖子都与OpenSSL有关,因此可以认为,在加密回送接口流量的特定情况下,在Node中使用SSL可能使其安全性降低。
。有关更多信息,请参见有关GitHub上Node项目的讨论。



 类似资料:
  • Nginx 说明 Nginx 是一个很强大的高性能 Web 和反向代理服务器,常被我们用作负载均衡服务器,也可以作为邮件代理服务器 Nginx WIKI:https://zh.wikipedia.org/zh/Nginx Nginx 百科:http://baike.baidu.com/item/nginx Nginx 官网:http://nginx.org/en/ Nginx 官网下载:http:

  • 配置 NGINX NGINX 相关的配置可以单独写一本书,不过一开始,我们不会用到太多的配置选项。这本书主要介绍搭建一个 LEMP 环境的流程,你可以在相关资源里找到扩展学习的课程与资料。 先去看一下 NGINX 配置文件所在地。 查看 NGINX 的配置: cd /etc/nginx ls 返回: conf.d koi-utf mime.types nginx.conf

  • 到目前为止,我在Ubuntu18.04远程服务器上使用uwsgi和nginx运行了一个Flask应用程序。这个应用程序是由我的网站监听端口5002的子域服务的。我想添加一个新的Flask应用程序来监听端口5003,但我一定是做了一些错误的配置,然后一切都失控了。现在这两个应用程序都不起作用了。 app1的服务器块 null

  • 本文向大家介绍详解nginx upstream 配置和作用,包括了详解nginx upstream 配置和作用的使用技巧和注意事项,需要的朋友参考一下 配置例子 指令 语法: upstream name { ... } 默认值: — 上下文: http 定义一组服务器。 这些服务器可以监听不同的端口。 而且,监听在TCP和UNIX域套接字的服务器可以混用。 例子: 默认情况下,nginx按加权轮转

  • 主要内容:1. 设置错误日志,2. 设置访问日志,3. 启用条件日志记录,4. 日志记录到Syslog本节介绍如何在NGINX中配置日志记录错误和处理的请求。在本文章中将涉及以下内容 - 设置错误日志 设置访问日志 启用条件日志记录 日志记录到Syslog 1. 设置错误日志 NGINX将遇到的不同严重性级别问题的信息写入错误日志。 指令将日志记录设置为特定文件,或,并指定要记录的消息的最低级别。 默认情况下,错误日志位于(绝对路径取决于操作系统和安装),并记录来自所指定的所有严重级别的消息。

  • NGINX与其他服务类似,因为它具有以特定格式编写的基于文本的配置文件。 默认情况下,文件名为并放在目录中(对于开源NGINX产品,位置取决于用于安装NGINX和操作系统的软件包系统,它通常位于或。) 配置文件由指令及其参数组成。 简单(单行)指令各自以分号结尾。 其他指令作为“容器”,将相关指令组合在一起,将其包围在花括号()中。 以下是简单指令的一些示例。 为了使配置更易于维护,建议您将其拆分