持续学习&持续更新中…

守破离


Thymeleaf

 * 模板引擎
 *  1)、thymeleaf-starter:关闭缓存
 *  2)、静态资源都放在static文件夹下就可以按照路径直接访问
 *  3)、页面放在templates下,直接访问
 *      SpringBoot,访问项目的时候,默认会找index
 *  4)、页面修改不重启服务器实时更新
 *      1)、引入dev-tools
 *      2)、修改完页面 ctrl+f9(Build Project) 重新自动编译下页面;如果是代码配置,推荐重启
    <!--      模板引擎: thymeleaf -->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-thymeleaf</artifactId>
    </dependency>

在这里插入图片描述

在这里插入图片描述

默认配置,如果不想修改的话,不用配

在这里插入图片描述

spring:
  thymeleaf:
    encoding: utf-8
    prefix: classpath:/templates/
    suffix: .html
    enabled: true
    servlet:
      content-type: text/html

开发期间配置这个就好(配合devtools使用):

spring:
  thymeleaf:
    cache: false
<dependency>
	   <groupId>org.springframework.boot</groupId>
	   <artifactId>spring-boot-devtools</artifactId>
	   <optional>true</optional>
</dependency>

在这里插入图片描述

@Controller
public class IndexController {

    @Autowired
    private CategoryService categoryService;

    @GetMapping({"/", "/index.html"})
    public String indexPage(Model model) {
        List<CategoryEntity> categorys = categoryService.listLevel1Categorys();
        model.addAttribute("categorys",categorys);
        return "index";
    }

}
<li th:each="category : ${categorys}">
  <a href="/static/#" class="header_main_left_a" th:attr="ctg-data=${category.catId}"><b
          th:text="${category.name}">家用电器</b></a>
</li>

安装 nginx (Linux)

在这里插入图片描述

docker run -p 80:80 --name nginx -d nginx:1.10
docker container cp nginx:/etc/nginx .
mv nginx conf
mkdir nginx
mv conf nginx/
docker stop nginx
docker rm 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
docker update nginx --restart=always

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

成功:

在这里插入图片描述

nginx配置文件

在这里插入图片描述

正向代理与反向代理

在这里插入图片描述

正向代理,其实是"代理服务器"代理了"客户端"

反向代理,其实是"代理服务器"代理了"目标服务器"

正向代理和反向代理的区别:(https://cloud.tencent.com/developer/article/1418457)

  • 虽然正向代理服务器和反向代理服务器所处的位置都是客户端和真实服务器之间,所做的事情也都是把客户端的请求转发给服务器,再把服务器的响应转发给客户端,但是二者之间还是有一定的差异的。

  • 1、正向代理其实是客户端的代理,帮助客户端访问其无法访问的服务器资源。反向代理则是服务器的代理,帮助服务器做负载均衡,安全防护等。

  • 2、正向代理一般是客户端架设的,比如在自己的机器上安装一个代理软件。而反向代理一般是服务器架设的,比如在自己的机器集群中部署一个反向代理服务器。

  • 3、正向代理中,服务器不知道真正的客户端到底是谁,以为访问自己的就是真实的客户端。而在反向代理中,客户端不知道真正的服务器是谁,以为自己访问的就是真实的服务器。

  • 4、正向代理和反向代理的作用和目的不同。正向代理主要是用来解决访问限制问题。而反向代理则是提供负载均衡、安全防护等作用。二者均能提高访问速度。

Nginx+Windows搭建域名访问环境

在这里插入图片描述

hosts文件配置

C:\Windows\System32\drivers\etc\hosts

# nginx所在服务器地址
192.168.56.10 gulimall.com

转到商品服务

让nginx帮我们进行反向代理,所有来自原gulimall.com的请求,都转到商品服务:

在这里插入图片描述

统一转给网关服务

https://nginx.org/en/docs/http/load_balancing.html

/mydata/nginx/conf/nginx.conf:

http {
    upstream gulimall {
        # 网关地址
        server 192.168.43.245:88;
    }

    # 默认就有的配置
    include /etc/nginx/conf.d/*.conf;
}

/mydata/nginx/conf/conf.d/default.conf

server {
    listen       80;
    server_name localhost;

    location / {
	 root /usr/share/nginx/html;
	index index.html index.htm;
    }
}

/mydata/nginx/conf/conf.d/gulimall.conf

server {
    # 这里的gulimall.com:80,是监听浏览器发过来的请求
    listen       80;
    server_name  gulimall.com;

    location /static/ {
		root /usr/share/nginx/html;
    }

    location / {
        # 交给nginx.conf中的upstream gulimall
		proxy_pass http://gulimall;
        # nginx代理给网关的时候,会丢失请求的host信息
		proxy_set_header Host $host;
    }
}

配置网关:(配置网关的route一定要放在最下面)

server:
  port: 88
spring:
  cloud:
    gateway:
      routes:
        - id: gulimall_host_route
          uri: lb://gulimall-product
          predicates:
            - Host=gulimall.com,**.gulimall.com
#            - Host=gulimall.com,item.gulimall.com

动静分离

在这里插入图片描述

在这里插入图片描述

将静态资源放在虚拟机:/mydata/nginx/html/static/ 这个目录下。

在这里插入图片描述

修改:/mydata/nginx/conf/conf.d/default.conf

server {
    listen       80;
    server_name  gulimall.com;

    location /static/ {
		root /usr/share/nginx/html;
    }

    location / {
		proxy_pass http://gulimall;
		proxy_set_header Host $host;
    }
}

然后修改静态资源路径:

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

参考

雷丰阳: Java项目《谷粒商城》Java架构师 | 微服务 | 大型电商项目.


本文完,感谢您的关注支持!


Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐