【Nginx】微信小程序后端开发、一个域名访问多个服务

【Nginx】微信小程序后端开发、一个域名访问多个服务

1. 微信小程序后端开发

对于后端程序员,其实你们的职责就是干老本行,即写接口和服务,让前端能够访问你的接口就行,必要时需要查看微信小程序开发文档去向微信服务器发请求。

https://developers.weixin.qq.com/miniprogram/dev/framework/quickstart/

但是,微信小程序开发,前端项目部署在微信服务器,只能发 HTTPS 的请求去访问自己的后端,是开发阶段还可以关掉,但是上线了就是强制要求,为了微信小程序上线后功能正常,你必须让请求是 HTTPS 的!

2. 如何让请求是 HTTPS 的

  1. 拥有一台云服务器(我的是 Linux Centos 7)
  2. 拥有一个域名
  3. 将域名进行备案
  4. 拥有一个 SSL 证书
  5. 解析域名
  6. 下载证书
  7. 下载 Nginx
  8. 部署证书(我用的是 Nginx)
  9. 配置 Nginx

不要为了省钱遭罪,网上大部分的方法都很难成功(至少我找不到),买一个服务器和一个便宜的域名就行了!!!

  • 每个流程都可以去找找资料或者跟随官方的指导(我用的是阿里云),因为他们讲得比我好

对于 部署证书和配置,我接着讲 Nginx 也讲一下 7 - 8,并且网上的一些真的不太好懂,当时也是花了很长时间才成功了,现在总结一些攻略!

2. Nginx 的下载

这里用的是官方 Nginx 的方式去下载,虽然麻烦,但是真实有用,实测有效!

参考文章:【xshell】linux:CentOS 7 安装部署 nginx_xshell 7 中报nginx-ingress.tar-CSDN博客

Nginx 最终的位置:

cd /opt/ldkjdata/nginx/

编辑配置文件(注意修改为你的 nginx 版本,我的是 nginx-1.25.4,所以目录是这个,不过你可以重命名):

vim /opt/ldkjdata/nginx/nginx-1.25.4/conf/nginx.conf

启动:

/opt/ldkjdata/nginx/nginx-1.25.4/sbin/nginx

停止:

/opt/ldkjdata/nginx/nginx-1.25.4/sbin/nginx -s stop

重启:

/opt/ldkjdata/nginx/nginx-1.25.4/sbin/nginx -s reload

查看 TCP 是否正常监听

netstat -ntlp | grep nginx

3. 部署证书

3.1 上传证书

在这里插入图片描述

证书(两个文件:private.key 和 public.pem ) 上传到云服务器的 /etc/ssl/ 目录下(没有就创建)!

  • 其他位置可能找不到

修改配置文件:

vim /opt/ldkjdata/nginx/nginx-1.25.4/conf/nginx.conf

3.2 配置 Nginx

假设你的域名是 domain.com,就这样配置(在 http {} 内配置 server {} ,可以有多个):

# 以下属性中,以ssl开头的属性表示与证书配置有关。server {listen 443 ssl;server_name domain.com; root html;index index.html index.htm;ssl_certificate     /etc/ssl/public.pem;ssl_certificate_key /etc/ssl/private.key;ssl_session_timeout 5m;ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;ssl_protocols TLSv1.1 TLSv1.2 TLSv1.3;ssl_prefer_server_ciphers on;location / {proxy_pass http://127.0.0.1:80; 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;}}

在这里插入图片描述

3.3 配置域名服务端口

server {listen 80;server_name domain.com; location / {proxy_pass http://127.0.0.1:1701; 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;}
}

在这里插入图片描述

含义就是访问 domain.com/(根目录),被 Nginx 代理到服务器的 http://127.0.0.1:1701

假设你的 ip 是 11.22.33.44,后端服务端口是 1701,那么 https://domain.com/ 就相当于访问 http://11.22.33.44:1701,并不是 domain.com/ 被替换成 11.22.33.44:1701/,而是访问 11.22.33.44:1701/ 接口,“配置了去哪个端口访问这个接口 ”

  • 由于是服务器内部的代理,所以不需要开 1701 端口的防火墙~

4. 开发过程的小坑

4.1 一个域名多个服务

一个域名可以使用 Nginx 也可以通过服务网关去实现对应多个服务,而如果是部署两个项目,显然用 Nginx 更合适!

在刚才的基础上,去加几个配置即可:

vim /opt/ldkjdata/nginx/nginx-1.25.4/conf/nginx.conf
server {listen 80;server_name lbcmmszdntnt.cn; location / {proxy_pass http://127.0.0.1:1701; 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;}location ~ ^/forum(/.*)$ {proxy_pass http://127.0.0.1:61803$1$is_args$args; 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;}
}

在这里插入图片描述

为什么这么设置呢?这么设置是因为:

如果这么设置:

    location /forum {proxy_pass http://127.0.0.1:61803; 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://domain.com/forum 相当于指向 http://11.22.33.44:61803/forum,并不是 http://11.22.33.44:61803,即 “配置了去 61803 端口访问 /forum”

在这里插入图片描述

我们那样设置之后,就是访问 61803 端口的 / 了~

如果要新添其他服务,以此类推~

4.2 重定向的问题

建议使用设置响应头的方式去重定向,而不是 sendRedirect,因为 sendRedirect 可能会出错,这个是相对路径,相对于本次请求的 host!

在 HttpServletRequest 获取 URL 的时候,是 http 不是 https,所以不会访问成功,设置 “Location” 响应头的时候要注意!

补充,如果重定向到根目录要携带数据,要这样:https://domain.com/?key=value

4.3 静态资源发请求的问题

静态资源资源中 html 在浏览器中访问并发请求给后端,是相对路径的话,相对的是资源在浏览器中的 host,而不是路径

例如:

    location ~ ^/forum(/.*)$ {proxy_pass http://127.0.0.1:61803$1$is_args$args; 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;}

访问 61803 端口服务的 static 文件夹下的 index.html: domain.com/forum/index.html

在浏览器请求 /hello,实际上是 domain.com/hello 而不是 domain.com/forum/hello,就会被代理到别处

5. Nginx 反向代理与负载均衡

推荐视频:06.反向代理和负载均衡_哔哩哔哩_bilibili

	upsteam backend {ip_hash;server 127.0.0.1:8000 weight=3;server 127.0.0.1:8001;server 127.0.0.1:8002;}server {listen 80;server_name localhost; location /app {proxy_pass http://backend;}}

注意:如果已经有对 localhost:80 的服务监听,就把 location /app {} 写在里面就行。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://xiahunao.cn/news/2805981.html

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

回归预测 | Matlab实现SSA-BiLSTM-Attention麻雀算法优化双向长短期记忆神经网络融合注意力机制多变量回归预测

回归预测 | Matlab实现SSA-BiLSTM-Attention麻雀算法优化双向长短期记忆神经网络融合注意力机制多变量回归预测 目录 回归预测 | Matlab实现SSA-BiLSTM-Attention麻雀算法优化双向长短期记忆神经网络融合注意力机制多变量回归预测预测效果基本描述程序设计参考资料 预测效果 基…

零基础手把手教你创建微信小程序(二)·创建第一个微信小程序以及了解小程序代码的构成

零基础手把手教你创建微信小程序(一)微信小程序开发账号的注册以及开发者工具的安装和使用-CSDN博客 目录 ​编辑 1. 创建微信小程序 1.1 基本信息 1.2 在模拟器上查看项目效果 1.3 在真机上预览项目效果 1.4 主界面的5个组成部分 1.4.1 菜单…

NPM私服搭建(verdaccio)

官网地址:https://verdaccio.org/ 概述 Verdaccio 是一个流行的 Node.js 包管理器的代理工具,它允许您在本地或私有网络上轻松地创建和管理 npm 包仓库。通过 Verdaccio,开发团队可以建立自己的 npm 包仓库,以更好地控制和管理其依…

【力扣】Z 字形变换,模拟 + 直接构造

Z 字形变换原题地址 方法一:利用二维矩阵模拟 对于特殊情况,Z 字形变换后只有一行或只有一列,则变换后的字符串和原字符串相同。 对于一般情况,我们可以考虑按照题目要求,把字符串按照 Z 字形存储到二维数组中&…

做抖店想要快速起店怎么办?产品和流量是关键!新手可收藏!

大家好,我是电商小布。 在抖音小店开通完成后,大家考虑的第一件事情,一定是小店如何能够快速出单,成功起店。 店铺出单的重点,其实就在小店的运营上。 那么这么多的环节,关键点在哪呢? 答案…

大学生多媒体课程学习网站thinkphp+vue

开发语言:php 后端框架:Thinkphp 前端框架:vue.js 服务器:apache 数据库:mysql 运行环境:phpstudy/wamp/xammp等开发背景 (一) 研究课程的提出 (二)学习网站的分类与界定…

前端页面之间传输数据 localStorage

效果 发送方 接收方 localStorage 的使用 // 保存数据 localStorage.setItem(key, value); // 获取数据 localStorage.getItem(key);发送方 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>登录<…

【深蓝学院】移动机器人运动规划--第6章 模型预测控制(MPC)与运动规划--笔记

0. Outline 1. Reactive Control&#xff08;反应式控制&#xff09; 控制学中的 “Reactive Control” 通常指的是一种控制策略&#xff0c;它依赖于系统对特定事件或变化的即时反应&#xff0c;而不是按照预定的计划或策略行动。这种控制往往是基于当前的传感器输入来做出决…

c编译器学习07:minilisp编译器改造(debug模式支持调试)

问题 原版的minilisp编译器不支持argv输入测试&#xff0c;不方便单步调试。 代码改造目标是既不改变原有程序的各种功能&#xff0c; 又能支持个人习惯的vs单步debug模式。 CMakeLists.txt变更 定义DEBUG宏 解决单步调试源码定位偏差问题 cmake_minimum_required(VERSION …

【Android安全】Windows 环境下载 Android 源码

准备环境 安装 git 安装 Python 硬盘剩余容量最好大于 100G 打开 Git Bash&#xff0c;用 git 克隆源代码仓库 git clone https://android.googlesource.com/platform/manifest.git //没有梯子使用清华源 git clone https://aosp.tuna.tsinghua.edu.cn/platform/manifest.git…

RabbitMQ 部署方式选择

部署模式 RabbitMQ支持多种部署模式&#xff0c;可以根据应用的需求和规模选择适合的模式。以下是一些常见的RabbitMQ部署模式&#xff1a; 单节点模式&#xff1a; 最简单的部署方式&#xff0c;所有的RabbitMQ组件&#xff08;消息存储、交换机、队列等&#xff09;都运行在…

TensorRT及CUDA自学笔记003 NVCC及其命令行参数

TensorRT及CUDA自学笔记003 NVCC及其命令行参数 各位大佬&#xff0c;这是我的自学笔记&#xff0c;如有错误请指正&#xff0c;也欢迎在评论区学习交流&#xff0c;谢谢&#xff01; NVCC是一种编译器&#xff0c;基于一些命令行参数可以将使用PTX或C语言编写的代码编译成可…

新手如何自己建网站的详细步骤?-网站建设

新手如何自己建网站的详细步骤&#xff1f;-网站建设 我们选择了白嫖雨云的二级域名 浏览器输入https://www.rainyun.com/z22_ 创建账号然后选择一个你喜欢的子域名我建议后缀选择ates.top的 选择自定义地址&#xff0c;类型选择cname 现在要选择记录值了&#xff0c;有a&…

linux内核原理--页高速缓存,回写,页框回收

1.页高速缓存 我们主要分析下磁盘文件的页高速缓存 struct address_space {struct inode *host; struct radix_tree_root page_tree; spinlock_t tree_lock;unsigned int i_mmap_writable;struct prio_tree_root i_mmap; struct list_head i_mmap_nonlinear;spinlock_t i_…

2023最新简绘AI开源版支持MJ绘画,AI问答

应用介绍 本文来自&#xff1a;2023最新简绘AI开源版支持MJ绘画&#xff0c;AI问答 - 源码1688 简介&#xff1a; 简绘AI开源版&#xff0c;从闲鱼上买的&#xff0c;搭建教程如下 测试环境&#xff1a;NginxPHP7.4MySQL5.6 图片&#xff1a;

com.alibaba.nacos.api.exception.NacosException: Request nacos server failed

问题描述 安装nacos2.0以上版本&#xff0c;启动报错:com.alibaba.nacos.api.exception.NacosException: Request nacos server failed com.alibaba.nacos.api.exception.NacosException: Request nacos server failed: at com.alibaba.nacos.client.naming.remote.gprc.Nami…

2024022402-数据库恢复技术

数据库恢复技术 什么是事务 事务(Transaction)是用户定义的一个数据库操作序列&#xff0c;这些操作要么全做&#xff0c;要么全不做&#xff0c;是一个不可分割的工作单位 事务和程序是两个概念 在关系数据库中&#xff0c;一个事务可以是一条SQL语句&#xff0c;一组SQL语…

Movelt使用笔记-Movelt Setup Assistant

目录 Setup Assistant配置1 Start 加载urdf模型3 Virtual joints 虚拟关节5 Robot Poses 机器人位姿7 Passive Joints 被动关节8 Controllers 控制器9 Simulation 仿真10 3D Perception 3D感知11 Author Information 作者信息12 Configuration Files 配置文件启动MoveIt!Setup…

潇洒郎:2024 IDEA、Pycharm获取最新激活码获取方式

IDEA获取最新激活码 https://idea.javatiku.cn/ 手机打开&#xff0c;看到验证码&#xff0c;30分钟有效&#xff0c;输入验证码 获取到最新激活码

Vue.js+SpringBoot开发超市商品管理系统

目录 一、摘要1.1 简介1.2 项目录屏 二、研究内容2.1 数据中心模块2.2 超市区域模块2.3 超市货架模块2.4 商品类型模块2.5 商品档案模块 三、系统设计3.1 用例图3.2 时序图3.3 类图3.4 E-R图 四、系统实现4.1 登录4.2 注册4.3 主页4.4 超市区域管理4.5 超市货架管理4.6 商品类型…