当前位置:首页 > 工具 > 正文内容

使用nginx让nps内网穿透的网站支持https

IM1年前 (2025-02-27)工具7

00.nps配置

因为nginx需要监听80与443端口,而nps的http和https默认代理端口也是80与443端口,所以我们需要修改nps的配置

进入nps的根目录,本人这里是/opt/nps/,但是很多人是/etc/nps

进入conf文件夹,编辑nps.conf文件,找到以下代码块

#HTTP(S) proxy port, no startup if empty
http_proxy_ip=0.0.0.0
http_proxy_port=80
https_proxy_port=443
https_just_proxy=true

将其中的80和443端口改成你想要的就可以了,https可以留空,因为我们直接用nginx强制使用https即可,就不需要https代理了

然后重启nps:

sudo systemctl restart nps

我这里将http代理端口设置为8010,https端口设置为空

01.新建域名解析(如果之前没有)

这里的主机指的是用户访问的地址,也就是用户输入地址栏的地址。只有nps识别到用户从主机一模一样的域名进来,才会给你内网穿透

02.nginx与nps配合的配置

先上配置文件(里面的charsama.cn要改为你自己的域名):

events {
    worker_connections 1024;
}

http {
    # 1. 主域名的 HTTP 重定向到 HTTPS
    server {
        listen 80;
        server_name charsama.cn;
        return 301 https://charsama.cn$request_uri;
    }

    # 2. 强制将 www.charsama.cn 的 HTTP 重定向到 HTTPS 主域名
    server {
        listen 80;
        server_name www.charsama.cn;
        return 301 https://charsama.cn$request_uri;
    }

    # 3. 强制将 HTTPS 的 www.charsama.cn 重定向到主域名
    server {
        listen 443 ssl;
        server_name www.charsama.cn;
        ssl_certificate /etc/nginx/conf.d/charsama.cn/fullchain.pem;
        ssl_certificate_key /etc/nginx/conf.d/charsama.cn/privkey.pem;
        return 301 https://charsama.cn$request_uri;
    }

    # 4. 主域名 HTTPS 配置
    server {
        listen 443 ssl;
        server_name charsama.cn;
        ssl_certificate /etc/nginx/conf.d/charsama.cn/fullchain.pem;
        ssl_certificate_key /etc/nginx/conf.d/charsama.cn/privkey.pem;
        ssl_session_timeout 5m;
        ssl_protocols TLSv1.1 TLSv1.2 TLSv1.3;
        ssl_ciphers EECDH+CHACHA20:EECDH+AES128:RSA+AES128:EECDH+AES256:RSA+AES256:EECDH+3DES:RSA+3DES:!MD5;
        ssl_prefer_server_ciphers on;
        add_header Strict-Transport-Security "max-age=31536000";

        access_log /var/log/nginx/charsama.cn.https.log;

        location / {
            proxy_pass http://127.0.0.1:8010;
            proxy_set_header Host $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;
        }
    }
}

前面三个都是用于强制跳转的,效果大概是:

https://charsama.cn       -> https://charsama.cn
http://www.charsama.cn   -> https://charsama.cn
https://www.charsama.cn  -> https://charsama.cn

最后一个server中的proxy_pass http://127.0.0.1:8010;就是将请求发送到nps大的http代理端口,我之前设置的是8010,你们如果设置的是其它端口就设置为proxy_pass http://127.0.0.1:[其它端口];

原理就是,你给nps发送了用户的host,也就是用户访问的主机名,然后nps通过8010端口接收并从域名解析中对比主机名,哪个对上了就内网穿透哪一个

        ssl_certificate /etc/nginx/conf.d/charsama.cn/fullchain.pem;
        ssl_certificate_key /etc/nginx/conf.d/charsama.cn/privkey.pem;

这两行是证书,我们等会就会去申请

将这些配置修改成你的域名之后,进入nginx根目录

cd /etc/nginx

把上面的所有内容(你修改过后的)全部替换你nginx.conf里面的内容(如果你曾经修改过里面的东西请酌情保留)

03.申请证书

进入 https://httpsok.com/ 网页(如果不介意的话可以进入我的邀请页面https://httpsok.com/p/4ODl,虽然对我帮助可能不是特别大但是羊毛谁不爱薅呢?)

找到证书管理,点击免费申请证书(才发现我做演示申请的证书也被算进免费额度里了)

按照httpsok网站提供的指示,填写域名cname的记录,直接复制粘贴就好了(

保存之后直接验证,验证通过后就可以直接申请了,申请完毕之后我们回到证书管理页面,下载证书,直接下载nginx版本的。可以先点击下载之后复制下载链接,然后到服务器使用wget [下载链接],然后unzip解压,也可以直接通过其他应用上传到服务器里

进入nginx的conf.d文件夹,一般是/etc/nginx/conf.d/

cd /etc/nginx/conf.d

在此处创建一个与你域名相同的文件夹

mkdir domain.com(替换成你的域名)

进入这个文件夹

cd domain.com(替换成你的域名)

然后把你刚才下载的证书(解压过后的.pem文件)移动到这里(或者直接在这里下载也行)

然后返回到nginx根目录

cd /etc/nginx

我们再次打开httpsok网站找到自动部署,复制nginx的自动部署命令,大概长这个样子(每个人的都不一样,不要复制我的!!)

curl -s https://get.httpsok.com/ | bash -s 9aN0RN3y4hczqP9wL4

注意:非root用户要在bash前面加上sudo,大概是这样子:

curl -s https://get.httpsok.com/ | sudo bash -s 9aN0RN3y4hczqP9wL4

然后你会看到这样的回应,如果不是那你就失败了(

如果出现相同的回应,就说明你成功了。

完事了之后重启下nginx:

sudo systemctl restart nginx

访问你的域名,这个时候你应该看到你的网站正常运行,并且具有https保护

04.一些小问题

wordpress(或者其他服务)如果出现资源缺失等问题请开启wordpress的https模式

修改wordpress根目录(或者docker容器内的wp-config.php)

添加这三行就行了:

$_SERVER['HTTPS'] = 'on';
define('FORCE_SSL_LOGIN', true);
define('FORCE_SSL_ADMIN', true);


扫描二维码推送至手机访问。

版权声明:本文由柒凌轩发布,如需转载请注明出处。

本文链接:http://x.zx.cdqlx.top/?id=31

分享给朋友:

“使用nginx让nps内网穿透的网站支持https” 的相关文章

APP自动更换包名和签名去报毒系统源码

APP自动更换包名和签名去报毒系统源码

源码简介:系统通过对apk反编译,随机包名,随机签名,混淆代码等方式,回编译生成新的apk安装包通过系统智能自动处理,间隔5分钟(可以自定义时间)生成一个新包,通过对接对象云储存系统分发给不同的用户下载使用,确保每个用户下载的安装包都是独立的不同的,以此达到去毒的效果!1.本程序所有功能逻辑均没有第...

6月保姆级知识付费平台搭建

6月保姆级知识付费平台搭建

源码简介:2024 最新彩虹晴天多功能系统源码 知识付费 虚拟商城 完美可用无需授权、国内外服务器皆可搭建、是不是备案域名也皆可部署、可以商业运营本系统有本人亲自修复更新后所发布出来,全网独家首发,且包含众多功能本程序并非适用于知识付费也可以做虚拟商城、实物商城、虚拟卡网等扩展性...

最新php项目加密源码

最新php项目加密源码

源码简介:压缩包里有多少个php就会被加密多少个PHP、php无需安装任何插件。源码全开源如果上传的压缩包里有子文件夹(子文件夹里的php文件也会被加密),加密后的压缩包需要先修复一下,步骤:打开压缩包 =》 工具 =》 修复压缩文件相关图片:...

NIUSHOP完美运营版商城 虚拟商品全功能商城 全能商城小程序 智慧商城系统 全品类百货商城

NIUSHOP完美运营版商城 虚拟商品全功能商城 全能商城小程序 智慧商城系统 全品类百货商城

源码简介:完美运营版商城/拼团/团购/秒杀/积分/砍价/实物商品/虚拟商品等全功能商城干干净净 没有一丝多余收据 还没过手其他站 还没乱七八走的广告和后门后台可以自由拖曳修改前端UI页面 还支持虚拟商品自动发货等功能 挺不错的一套源码前端UNIAPP 后端PHP 一键部署版本相关图片:源码下载:...

Centos7安装MySQL8.0详细教程(压缩包安装方式)

Centos7安装MySQL8.0详细教程(压缩包安装方式)

下载MySQL下载地址: https://downloads.mysql.com/archives/community/这里需要知道自己的linux的glibc版本,不然安装的时候会提示glibc版本过低。查询方法如下:rpm -q glibc下载之后,将压缩包上传到服务器上,准备安装MySQL。三...

发表评论

访客

看不清,换一张

◎欢迎参与讨论,请在这里发表您的看法和观点。