重新认识 nginx 反向代理

简介: 后端开发的小伙伴经常会用到 nginx 工具,那么我们不禁要问:它具体的作用是什么呢?今天我们就来通过一个实例来搞清楚!

目录

  • 前言
  • 正文
  • 结尾

前言

后端开发的小伙伴经常会用到 nginx 工具,那么我们不禁要问:它具体的作用是什么呢?今天我们就来通过一个实例来搞清楚!

正文

整件事情经过是这样的,自己开发了一个服务,对外接口都是 http 协议的。但是部署的时候,其他的服务都是 https 的,特别是 web 页面也是 https 的,为了避免 https 协议和 http 协议混合使用导致的浏览器告警和错误。因此,需要想办法处理一下。

这里提一个问题,如果是你,你会怎么处理呢?

是不是也会想到使用 nginx,或者自己重新封装对应的 https 的接口。两种方式各有利弊,第一种方式的优势是不需要修改代码,可以在部署的时候,通过使用 nginx 灵活设置。缺点是服务本身不支持 https 协议,需要配合 nginx 使用;第二种方式的优势是服务同时支持 http 协议和 https 协议,功能更加强大,但是缺点也非常明显,需要修改代码,有一定开发的工作量。

权衡利弊之后,特别是考虑到时间因素,因此暂定使用第一种方案,通过配置 nginx 来实现。

下面列出自己的 nginx 配置文件内容,便于大家参考:

upstream bag-api {
  server 47.4.5.13:9905;
}
upstream minio-api {
  server 47.4.5.13:9002;
}
server {
    listen 80;
    server_name 47.4.5.13;
    rewrite ^ https://$http_host$request_uri? permanent;
}
server {
    listen       443 ssl ;
    ssl_certificate /etc/nginx/certs/service.cert;
    ssl_certificate_key /etc/nginx/certs/service.key;
    ssl_session_timeout 5m;
    ssl_session_cache    shared:SSL:10m;
    ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
    ssl_ciphers ECDH:AESGCM:HIGH:!RC4:!DH:!MD5:!aNULL:!eNULL;
    ssl_prefer_server_ciphers on;
    server_name 47.4.5.13 lozen.007.cn;
    access_log logs/vhost_access.log  ;
    error_log  logs/vhost_error.log;
    proxy_redirect off;
    proxy_set_header Host $host;
    proxy_set_header X-Forwarded-For $remote_addr;
    location ^~ /bag {
        expires -1;
        proxy_pass http://bag-api;
        proxy_redirect off;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }
    location ^~ /test {
        expires -1;
        proxy_pass http://minio-api;
        proxy_redirect off;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }
}

通过上面的配置,我们可以知道我们一共配置了两种策略,当有 https 协议请求匹配到 bag 或者 test 字段时,会分别跳转对应 http 协议接口。从而实现 https 协议到 http 协议的互相转化,满足我们开头提到的需求。

结尾

本文介绍的方法本质上是利用了 nginx 反向代理的功能,通过这个实例,我们也可以看到 nginx 功能的强大。因此,从事后端开发小伙伴是非常有必要掌握 nginx 使用方法的,通过这件事,我也对 nginx 的反向代理功能有了新的理解和认识。



作者简介:大家好,我是 Data-Mining(liuzhen007),是一位典型的音视频技术爱好者,同时也是CSDN博客专家、华为云享专家(共创编辑)、InfoQ 签约作者,欢迎关注我分享更多干货!



目录
相关文章
|
2月前
|
负载均衡 网络协议 Unix
Nginx七层(应用层)反向代理:SCGI代理scgi_pass篇
Nginx七层(应用层)反向代理:SCGI代理scgi_pass篇
57 1
|
11天前
|
负载均衡 应用服务中间件 Linux
nginx学习,看这一篇就够了:下载、安装。使用:正向代理、反向代理、负载均衡。常用命令和配置文件,很全
这篇博客文章详细介绍了Nginx的下载、安装、配置以及使用,包括正向代理、反向代理、负载均衡、动静分离等高级功能,并通过具体实例讲解了如何进行配置。
61 4
nginx学习,看这一篇就够了:下载、安装。使用:正向代理、反向代理、负载均衡。常用命令和配置文件,很全
|
18天前
|
应用服务中间件 nginx
nginx反向代理与证书设置
nginx反向代理与证书设置
30 3
|
17天前
|
负载均衡 算法 应用服务中间件
nginx反向代理与负载均衡
nginx反向代理与负载均衡
19 1
|
1月前
|
JavaScript Java 应用服务中间件
|
26天前
|
JavaScript 应用服务中间件 开发工具
vue尚品汇商城项目-day07【53.nginx反向代理配置】
vue尚品汇商城项目-day07【53.nginx反向代理配置】
28 4
|
2月前
|
应用服务中间件 nginx Docker
本地通过域名访问虚拟机上nginx的服务、搭建域名访问环境一(反向代理配置)
这篇文章介绍了如何通过域名在本地访问虚拟机上的nginx服务,包括创建nginx容器、修改配置文件、修改本地host文件以及进行访问测试的详细步骤。文章提供了具体的Docker命令来创建并配置nginx容器,展示了配置文件的修改示例,说明了如何在本地系统的hosts文件中添加虚拟机IP和自定义域名,以及如何通过浏览器进行测试访问。
本地通过域名访问虚拟机上nginx的服务、搭建域名访问环境一(反向代理配置)
|
2月前
|
缓存 负载均衡 应用服务中间件
Nginx 代理管理器强势登场!轻松设置反向代理,为你的网络安全与高效护航,快来探索!
【8月更文挑战第23天】Nginx 代理管理器(NPM)是一款强大的工具,用于简化反向代理的设置流程。反向代理能隐藏后端服务器的真实IP,提升安全性,实现负载均衡与缓存等功能。用户需先安装Nginx 代理管理器,然后通过其Web界面添加代理主机,指定代理名称、协议类型、服务器地址及端口等信息。对于HTTPS协议,还需上传SSL证书/密钥。完成设置后,可通过浏览器测试反向代理是否正常工作。Nginx 代理管理器还支持高级特性,如负载均衡、缓存及访问控制等。
90 1
|
2月前
|
负载均衡 应用服务中间件 Linux
"揭晓nginx的神秘力量:如何实现反向代理与负载均衡,拯救服务器于水火?"
【8月更文挑战第20天】在Linux环境下,nginx作为高性能HTTP服务器与反向代理工具,在网站优化及服务器负载均衡中扮演重要角色。本文通过电商平台案例,解析nginx如何解决服务器压力大、访问慢的问题。首先介绍反向代理原理,即客户端请求经由代理服务器转发至内部服务器,隐藏真实服务器地址;并给出配置示例。接着讲解负载均衡原理,通过将请求分发到多个服务器来分散负载,同样附有配置实例。实践表明,采用nginx后,不仅服务器压力得到缓解,还提升了访问速度与系统稳定性。
69 3
|
2月前
|
负载均衡 算法 应用服务中间件
在Linux中,nginx反向代理和负载均衡实现原理是什么?
在Linux中,nginx反向代理和负载均衡实现原理是什么?