【微服务】一文了解Nginx网关搭建教程

271 阅读2分钟

Nginx网关搭建

那么什么是Nginx呢?

nginx是一个高性能HTTP服务器,反向代理服务器,邮件代理服务器,TCP/UDP反向代理服务器。

单个系统主要用于处理客户端请求,一个系统处理客户端的请求量是有限的,当客户端的并发量超过了系统的处理能力的时候,就会导致服务器性能降低,速度变慢,直接影响用户体验,所以为了提升性能,我们会创建多个服务实例,形成集群系统用于保证高可用。

也有部分业务场景,需要暴露给第三方,所以我们需要暴露出部分接口给第三方,这个时候我们就可以利用Nginx的反向代理,来代理我们的后端服务器。用户访问我们的Nginx网关,然后Nginx再转发给我们后端的业务模块。 详解图如下: 在这里插入图片描述

nginx配置

前提是咱们的Linux上已经安装过了Nginx,这边就不演示下载过程了。

http{
  server {
     #SSL 默认访问端口号为 443
     listen 80;
     listen 443 ssl;
     #请填写绑定证书的域名
     server_name comicomi.cloud;
     #请填写证书文件的相对路径或绝对路径
     ssl_certificate /etc/nginx/cert/comicomi.cloud_bundle.crt;
     #请填写私钥文件的相对路径或绝对路径
     ssl_certificate_key /etc/nginx/cert/comicomi.cloud.key;
     ssl_session_timeout 5m;
     #请按照以下协议配置
     ssl_protocols TLSv1 TLSv1.2 TLSv1.3;
     #请按照以下套件配置,配置加密套件,写法遵循 openssl 标准。
     ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;
     ssl_prefer_server_ciphers on;
     location /api/ {
                proxy_pass https://173.21.0.7:9938/;
                proxy_next_upstream error timeout invalid_header http_500 http_503;
                proxy_set_header X-Forwarded-Proto https;
                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_redirect     off;
                proxy_connect_timeout      300;
                proxy_send_timeout         300;
                proxy_read_timeout         300;
                #proxy_send_lowat          12000;
                proxy_buffer_size          128k;
                proxy_buffers              8 64k;
                proxy_busy_buffers_size    128k;
                proxy_temp_file_write_size 128k;
        }    
    
    }
 server{
        listen 80;
        server_name comicomi.cloud;
        rewrite ^/(.*)$ https://comicomi.cloud:443/$1 permanent;
                                                                 

这里有一些解读:

  location /api/ {
                  proxy_pass https://173.21.0.7:9938/;
  }

我们会调用api的接口,都会转发到 https://173.21.0.7:9938/ 这个项目对应的模块上

即:https://comicomi.cloud/api/user/register,会转为 https://173.21.0.7:9938/user/register

第二点就是,在路径 proxy_pass 后的 https://173.21.0.7:9938/; 可以看到,有一个反斜杠 / ,这个反斜杠 / 万万不能漏掉。那么加上和不加上这个反斜杠 又有什么区别呢?

加上反斜杠/ 后,是相对路径,不会匹配前面的 api,例如

即:https://comicomi.cloud/api/user/register,会转为 https://173.21.0.7:9938/user/register

但如果加上反斜杠 / ,就会是绝对路径,例如 即:https://comicomi.cloud/api/user/register,会转为 https://173.21.0.7:9938/api/user/register

还有就是再这里加入了Nginx的SSL验证,对其进行了加密操作。

这里大家可以去掉,也可以利用阿里云或者腾讯云免费的SSL证书来开启Nginx的安全验证。

测试:

在这里插入图片描述