Nginx+SpringCloud Gateway搭建项目访问环境

简介: Nginx+SpringCloud Gateway搭建项目访问环境

现如今的项目开发基本都是微服务方式,导致一个系统中会有很多的服务,每个模块都对应着不同的端口,为了方便访问,通常会让某个服务绑定一个域名,比如商品服务:product.xxx.com;订单服务:order.xxx.com,此时可以使用Nginx来搭建一个域名访问环境,基于前后端分离开发的项目经常会遇到跨域问题,使用Nginx也能轻松解决。

安装Nginx

首先拉取nginx的镜像:

docker pull nginx:1.10

然后随意地启动一个nginx实例:

docker run -p 80:80 --name nginx -d nginx:1.10

启动该nginx实例的目的是将nginx中的配置文件复制出来:

docker container cp nginx:/etc/nginx .

这样当前目录下就会产生一个nginx文件夹,将其先重命名为conf,然后再创建一个nginx文件夹,并将conf文件夹移动进去:

mv nginx conf
mkdir nginx
mv conf/ nginx/

然后正式启动一个新的nginx实例:

docker run -p 80:80 --name nginx \
                                -v /mydata/nginx/html:/usr/share/nginx/html \
                                -v /mydata/nginx/logs:/var/log/nginx \
                                -v /mydata/nginx/conf:/etc/nginx \
                -d nginx:1.10

将刚才准备好的nginx文件夹与nginx容器内的文件夹作一个一一映射。

准备SpringBoot应用

创建一个SpringBoot应用,并引入依赖:

<dependency>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>
<dependency>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
  <groupId>com.alibaba.cloud</groupId>
  <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>

将其注册到Nacos中:

spring:
  cloud:
    nacos:
      discovery:
        server-addr: 192.168.66.10:8848
  application:
    name: SpringBootDemo

启动项目,访问 http://localhost:8080/image.png 现在的需求是通过访问域名 myspringboot.com 也能够访问到该页面,所以来修改Windows中的hosts文件:

192.168.66.10 myspringboot.com

这段内容的作用是当访问 myspringboot.com 时,实际访问的是192.168.66.10,即我们的Linux系统。

此时来到Linux,配置一下Nginx,在conf.d目录下创建的配置文件都会被Nginx自动扫描到:

cd /mydata/nginx/conf/conf.d
touch mysb.conf

添加配置:

server {
    listen       80;
    server_name  myspringboot.com;

    location / {
        proxy_pass http://192.168.0.105:8080/;
    }

    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   /usr/share/nginx/html;
    }
}

这段配置表示监听myspringboot.com:80而来的请求,若是访问 / 则会被其中的location /处理,将该请求转发至http://192.168.0.105:8080/image.png

添加网关

一般情况下,Nginx都会配合网关一起使用,这是因为微服务一般会做集群部署,此时请求就无法准确地决定具体该转向哪个服务,而是应该由其自动负载到每个服务上,所以,应该加入网关来实现这一功能。

创建一个SpringBoot应用,并引入依赖:

<dependency>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-starter</artifactId>
</dependency>
<dependency>
  <groupId>org.springframework.cloud</groupId>
  <artifactId>spring-cloud-starter-gateway</artifactId>
</dependency>
<dependency>
  <groupId>com.alibaba.cloud</groupId>
  <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>

同样需要将网关注册到Nacos中:

spring:
  cloud:
    nacos:
      discovery:
        server-addr: 192.168.66.10:8848
  application:
    name: MyGateway
server:
  port: 9000

此时修改Nginx的配置,首先在http块添加对网关的配置:

upstream my_gateway{
        server 192.168.0.105:9000 # 配置网关的地址
}

然后修改server块:

server {
    listen       80;
    server_name  myspringboot.com;

    location / {
                proxy_pass http://my_gateway; # 转发至网关
    }

    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   /usr/share/nginx/html;
    }
}

现在访问 http://myspringboot.com/ ,请求会被交给Nginx,Nginx又会将其交给网关处理,我们再来配置一下网关,使其将请求转发给指定的服务处理:

spring:
  cloud:
    gateway:
      routes:
        - id: springbootdemo_route
          uri: lb://SpringBootDemo
          predicates:
            - Path=/**

这段配置会监听所有的请求,因为Path的值为 /** ,当请求来到网关时,直接将其转交给MySpringBoot服务, lb:// 表示负载均衡,效果如下: image.png 现在的请求就是经过Nginx再经过网关最后到达的具体服务。

目录
相关文章
|
2月前
|
应用服务中间件 Linux 网络安全
nginx安装部署ssl证书,同时支持http与https方式访问
为了使HTTP服务支持HTTPS访问,需生成并安装SSL证书,并确保Nginx支持SSL模块。首先,在`/usr/local/nginx`目录下生成RSA密钥、证书申请文件及自签名证书。接着,确认Nginx已安装SSL模块,若未安装则重新编译Nginx加入该模块。最后,编辑`nginx.conf`配置文件,启用并配置HTTPS服务器部分,指定证书路径和监听端口(如20000),保存后重启Nginx完成部署。
420 7
|
2月前
|
监控 应用服务中间件 定位技术
要统计Nginx的客户端IP,可以通过分析Nginx的访问日志文件来实现
要统计Nginx的客户端IP,可以通过分析Nginx的访问日志文件来实现
161 3
|
3月前
|
安全 应用服务中间件 网络安全
如何测试Nginx反向代理实现SSL加密访问的配置是否正确?
如何测试Nginx反向代理实现SSL加密访问的配置是否正确?
141 3
|
3月前
|
安全 应用服务中间件 网络安全
配置Nginx反向代理实现SSL加密访问的步骤是什么?
我们可以成功地配置 Nginx 反向代理实现 SSL 加密访问,为用户提供更安全、可靠的网络服务。同时,在实际应用中,还需要根据具体情况进行进一步的优化和调整,以满足不同的需求。SSL 加密是网络安全的重要保障,合理配置和维护是确保系统安全稳定运行的关键。
213 3
|
3月前
|
Web App开发 算法 应用服务中间件
nginx开启局域网https访问
【10月更文挑战第22天】为了调试WebRTC功能,需要在局域网内搭建HTTPS协议。具体步骤包括:在已部署Nginx和安装OpenSSL的环境中生成私钥、证书签名请求和自签名证书;将生成的文件放置到Nginx的证书目录并修改Nginx配置文件,最后重启Nginx服务。注意,自签名证书不受第三方机构认可,如需正式使用,需向CA申请签名。
|
4月前
|
JSON SpringCloudAlibaba Java
Springcloud Alibaba + jdk17+nacos 项目实践
本文基于 `Springcloud Alibaba + JDK17 + Nacos2.x` 介绍了一个微服务项目的搭建过程,包括项目依赖、配置文件、开发实践中的新特性(如文本块、NPE增强、模式匹配)以及常见的问题和解决方案。通过本文,读者可以了解如何高效地搭建和开发微服务项目,并解决一些常见的开发难题。项目代码已上传至 Gitee,欢迎交流学习。
247 1
Springcloud Alibaba + jdk17+nacos 项目实践
|
3月前
|
负载均衡 Java API
项目中用的网关Gateway及SpringCloud
Spring Cloud Gateway 是一个功能强大、灵活易用的API网关解决方案。通过配置路由、过滤器、熔断器和限流等功能,可以有效地管理和保护微服务。本文详细介绍了Spring Cloud Gateway的基本概念、配置方法和实际应用,希望能帮助开发者更好地理解和使用这一工具。通过合理使用Spring Cloud Gateway,可以显著提升微服务架构的健壮性和可维护性。
76 0
|
4月前
|
Ubuntu 应用服务中间件 Linux
Linux下搭建Nginx环境的搭建
Linux下搭建Nginx环境的搭建
99 6
|
4月前
|
应用服务中间件 Shell PHP
windows系统配置nginx环境运行pbootcms访问首页直接404的问题
windows系统配置nginx环境运行pbootcms访问首页直接404的问题
|
4月前
|
JavaScript 应用服务中间件 nginx
nginx部署vue项目
本文介绍了将Vue项目部署到Nginx的步骤,包括构建Vue项目、上传dist文件夹到服务器、安装Nginx、配置Nginx代理静态文件以及重启Nginx,确保了Vue应用可以通过域名或IP地址访问。
213 1