网站和优化 · 11 5 月, 2025

使用OpenResty配置HTTPS服务:一体化实现HTTP/HTTPS并发与真实IP获取

前言

在当前互联网环境中,为网站部署HTTPS已成为保障通信安全的重要手段。尤其是对于部署在香港云服务器上的应用服务而言,高效、灵活且安全的HTTPS配置是不可或缺的基础能力。本文将介绍如何使用OpenResty(基于Nginx的高性能Web平台)一步步实现HTTPS部署、HTTP跳转HTTPS、端口共存以及客户端真实IP获取等关键功能。

一、环境搭建与基础配置

1. 安装OpenResty并启用必要模块

使用源码编译方式安装OpenResty,可以灵活启用所需模块。建议加入以下编译参数:

--with-stream \
--with-stream_ssl_module \
--with-stream_ssl_preread_module \
--with-http_realip_module \
--with-http_ssl_module

这些模块为后续支持TLS预读取、反向代理真实IP、双协议兼容等提供了基础保障,非常适合在香港独立服务器等多应用环境中部署使用。

2. 生成SSL证书

可通过OpenSSL快速创建一套自签名证书,便于测试:

mkdir -p /tmp/nginx/ssl
openssl genrsa 1024 > /tmp/nginx/ssl/server.key
openssl req -new -key /tmp/nginx/ssl/server.key > /tmp/nginx/ssl/server.csr
openssl req -x509 -days 365 -key /tmp/nginx/ssl/server.key -in /tmp/nginx/ssl/server.csr > /tmp/nginx/ssl/server.crt

这套流程适用于在本地或测试环境下模拟HTTPS请求,部署在香港VPS环境中可根据需要更换为正式CA签发的证书。

3. 启动基础服务

配置一个支持HTTP和HTTPS的基本server:

server {
    listen       80;
    listen       443 ssl;
    server_name  localhost;
    ssl_certificate     cert/server.crt;
    ssl_certificate_key cert/server.key;
    ssl_session_cache   shared:SSL:1m;
    ssl_session_timeout 10m;
    ssl_ciphers         HIGH:!aNULL:!MD5;
    ssl_prefer_server_ciphers on;

    location / {
        root   html;
        index  index.html index.htm;
    }
}

二、实现HTTP自动跳转到HTTPS

为了提升用户安全体验,可以配置HTTP端口强制跳转HTTPS:

server {
    listen       8888 ssl;
    server_name  localhost;
    ssl_certificate     cert/server.crt;
    ssl_certificate_key cert/server.key;
    error_page 497 https://$host:$server_port$request_uri;

    location / {
        root   html;
        index  index.html index.htm;
    }
}

访问 http://IP:8888 时,会自动重定向至安全的HTTPS协议页面,有效防止中间人攻击,尤其适合在跨境电商或数据敏感类香港VPS网站中使用。

三、HTTP与HTTPS共存支持

通过stream模块,OpenResty可以在同一端口支持HTTP和HTTPS协议:

http {
    real_ip_recursive on;
    real_ip_header proxy_protocol;
    set_real_ip_from 127.0.0.0/24;

    server {
        listen 8888 ssl proxy_protocol;
        ...
    }
    server {
        listen 8889 proxy_protocol;
        ...
    }
}

stream {
    upstream http_gateway  { server 127.0.0.1:8889; }
    upstream https_gateway { server 127.0.0.1:8888; }

    map $ssl_preread_protocol $upstream {
        default     http_gateway;
        "TLSv1.0"   https_gateway;
        "TLSv1.1"   https_gateway;
        "TLSv1.2"   https_gateway;
        "TLSv1.3"   https_gateway;
    }

    server {
        listen 12345;
        ssl_preread on;
        proxy_pass $upstream;
        proxy_protocol on;
    }
}

该配置可同时识别HTTP和HTTPS请求并正确分发,为需要兼容老设备和新协议的业务部署提供极大便利。搭配香港云服务器的带宽优势,进一步提升用户访问速度和体验。

四、记录真实客户端IP地址

由于stream转发导致日志中显示的客户端IP变为127.0.0.1,我们需配合proxy_protocolreal_ip模块恢复真实IP:

real_ip_recursive on;
real_ip_header proxy_protocol;
set_real_ip_from 127.0.0.0/24;

这对于进行用户行为分析、安全审计和IP限制等场景极为重要。

结语

通过本文的实战演示,我们可以看到OpenResty在HTTPS配置方面具有极高的灵活性和性能,尤其适用于部署在香港独立服务器等高要求环境中的业务。若您正在寻找一款高性价比、网络通畅、配置灵活的海外主机解决方案,推荐选择 香港服务器,在安全和速度之间实现最优平衡。