τα στοιχεία επικοινωνίας μου
Ταχυδρομείο[email protected]
2024-07-12
한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina
Το Spring Cloud Gateway παρέχει μια πύλη API χτισμένη πάνω στο οικοσύστημα Spring, συμπεριλαμβανομένων: Spring 5, Spring Boot 2 και Project Reactor. Το Spring Cloud Gateway στοχεύει να παρέχει έναν απλό αλλά αποτελεσματικό τρόπο δρομολόγησης και τους παρέχει ορισμένα βασικά χαρακτηριστικά της πύλης όπως: ασφάλεια, παρακολούθηση/μετρήσεις και ανθεκτικότητα.
Παρακάτω παρουσιάζουμε δύο παραδείγματα:
Έκδοση Spring Boot: 2.2.5.RELEASE
Έκδοση Spring Cloud: Hoxton.SR3
Εκτός εάν ορίζεται διαφορετικά, όλες οι ρουτίνες Spring Cloud θα χρησιμοποιούν την παραπάνω έκδοση.
Σύσταση: Πριν ξεκινήσετε αυτό το μάθημα, εάν δεν καταλαβαίνετε τα λεπτομερή βήματα δημιουργίας του Eureka, συνιστάται να διαβάσετε [Μάθετε πώς να χρησιμοποιείτε το κέντρο εγγραφής Eureka του Spring Cloud με ένα παράδειγμα],Δεν έχει σημασία αν δεν το έχετε δει ακόμα, απλώς ακολουθήστε τα παρακάτω βήματα για να ξεκινήσετε:
Εάν δεν έχετε γονικό έργο (αν έχετε ολοκληρώσει την παρουσία του κέντρου εγγραφής, πρέπει να έχετε ένα γονικό έργο), χρησιμοποιήστε το απλό Maven για να δημιουργήσετε ένα γονικό έργο:
Αφού το δημιουργήσετε, ανοίξτε το αρχείο pom.xml και προσθέστε τον ακόλουθο κώδικα:
- <?xml version="1.0" encoding="UTF-8"?>
- <project xmlns="http://maven.apache.org/POM/4.0.0"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
- <modelVersion>4.0.0</modelVersion>
-
- <groupId>org.cherry</groupId>
- <artifactId>springcloudproject</artifactId>
- <version>1.0-SNAPSHOT</version>
-
- <properties>
- <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
- <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
- <java.version>14</java.version>
- <spring-cloud.version>Hoxton.SR3</spring-cloud.version>
- <springboot.version>2.2.5.RELEASE</springboot.version>
- </properties>
- <dependencyManagement>
- <dependencies>
- <dependency>
- <groupId>org.springframework.cloud</groupId>
- <artifactId>spring-cloud-dependencies</artifactId>
- <version>${spring-cloud.version}</version>
- <type>pom</type>
- <scope>import</scope>
- </dependency>
- <dependency>
- <groupId>org.springframework.boot</groupId>
- <artifactId>spring-boot-dependencies</artifactId>
- <version>${springboot.version}</version>
- <type>pom</type>
- <scope>import</scope>
- </dependency>
- </dependencies>
- </dependencyManagement>
- </project>
Διαγραφή φακέλου src
Στο μητρικό έργο, χρησιμοποιήστε το Spring Initializr για να δημιουργήσετε ένα νέο υποέργο πύλης, και επιλέξτε να εξαρτηθείτε από το Gateway Ο απλός χάρτης είναι ο εξής:
Αφού δημιουργηθεί, τροποποιήστε το αρχείο pom.xml Το τροποποιημένο αρχείο έχει ως εξής:
- <?xml version="1.0" encoding="UTF-8"?>
- <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
- <modelVersion>4.0.0</modelVersion>
- <parent>
- <artifactId>springcloudproject</artifactId>
- <groupId>com.cherry</groupId>
- <version>1.0-SNAPSHOT</version>
- <!-- <groupId>org.springframework.boot</groupId>
- <artifactId>spring-boot-starter-parent</artifactId>
- <version>2.2.6.RELEASE</version>
- <relativePath/> <!– lookup parent from repository –>-->
- </parent>
- <groupId>com.cherry</groupId>
- <artifactId>gateway</artifactId>
- <version>0.0.1-SNAPSHOT</version>
- <name>gateway</name>
- <description>Demo project for Spring Boot</description>
-
- <!--<properties>
- <java.version>1.8</java.version>
- <spring-cloud.version>Hoxton.SR3</spring-cloud.version>
- </properties>-->
-
- <dependencies>
- <dependency>
- <groupId>org.springframework.cloud</groupId>
- <artifactId>spring-cloud-starter-gateway</artifactId>
- </dependency>
- <dependency>
- <groupId>org.springframework.boot</groupId>
- <artifactId>spring-boot-starter-test</artifactId>
- <scope>test</scope>
- <exclusions>
- <exclusion>
- <groupId>org.junit.vintage</groupId>
- <artifactId>junit-vintage-engine</artifactId>
- </exclusion>
- </exclusions>
- </dependency>
- </dependencies>
-
- <dependencyManagement>
- <dependencies>
- <dependency>
- <groupId>org.springframework.cloud</groupId>
- <artifactId>spring-cloud-dependencies</artifactId>
- <version>${spring-cloud.version}</version>
- <type>pom</type>
- <scope>import</scope>
- </dependency>
- </dependencies>
- </dependencyManagement>
-
- <build>
- <plugins>
- <plugin>
- <groupId>org.springframework.boot</groupId>
- <artifactId>spring-boot-maven-plugin</artifactId>
- </plugin>
- </plugins>
- </build>
-
- </project>
Τροποποιήστε το αρχείο διαμόρφωσης application.properties με το επίθημα yml (δηλαδή, αλλάξτε το όνομα αρχείου σε application.yml) για να ρυθμίσετε τις παραμέτρους της πύλης.
Εδώ χρησιμοποιούμε το csdn blog ως πάροχο υπηρεσιών
- server:
- port: 9001
-
- spring:
- application:
- name: gateway
- cloud:
- gateway:
- routes:
- - id: gateway-service
- uri: https://blog.csdn.net
- predicates:
- - Path=/huanzi833
Εκτέλεση εκτέλεσης, εκκίνηση ενσωματωμένης εκκίνησης Tomcat, θύρα 9001
Διεύθυνση εισαγωγής προγράμματος περιήγησηςhttp://localhost:9001/huanzi833
Εάν θέλετε η πύλη να μην είναι διαθέσιμη, μπορείτε να προσθέσετε τις ακόλουθες ρυθμίσεις στο application.yml:
- server:
- port: 9001
-
- spring:
- application:
- name: gateway
- cloud:
- gateway:
- routes:
- - id: gateway-service
- uri: https://blog.csdn.net
- predicates:
- - Path=/huanzi833
- enabled: false
-
Πρόσβαση στο πρόγραμμα περιήγησης, τα αποτελέσματα είναι τα εξής:
Σημείωση: Αφού τροποποιήσετε το αρχείο ιδιοτήτων, κάντε επανεκκίνηση της εφαρμογής μόνοι σας, δεν θα επαναλαμβάνω τις οδηγίες κάθε φορά.
Η δρομολόγηση τίθεται σε ισχύ μετά την ώρα που έχει οριστεί από το After. Για παράδειγμα: τα αιτήματα μετά την 1η Ιανουαρίου 2020 προωθούνται στο ιστολόγιό μου και τα αιτήματα πριν από αυτήν την ώρα δεν μπορούν να προωθηθούν.
- server:
- port: 9001
-
- spring:
- application:
- name: gateway
- cloud:
- gateway:
- routes:
- - id: gateway-service
- uri: https://blog.csdn.net
- predicates:
- - Path=/huanzi833
- - After=2020-01-01T00:00:00+08:00[Asia/Shanghai]
- enabled: true
-
Δρομολόγηση πριν από την ώρα που έχει οριστεί από την έναρξη ισχύος Για παράδειγμα: τα αιτήματα πριν από την 1η Ιανουαρίου 2021 προωθούνται στο ιστολόγιό μου και τα αιτήματα μετά από αυτήν την ώρα δεν μπορούν να προωθηθούν.
- server:
- port: 9001
-
- spring:
- application:
- name: gateway
- cloud:
- gateway:
- routes:
- - id: gateway-service
- uri: https://blog.csdn.net
- predicates:
- - Path=/huanzi833
- - After=2020-01-01T00:00:00+08:00[Asia/Shanghai]
- - Before=Before=2021-01-01T00:00:00+08:00[Asia/Shanghai]
- enabled: true
-
Η δρομολόγηση μεταξύ των χρόνων που ορίζονται από το Between τίθεται σε ισχύ. Για παράδειγμα: τα αιτήματα μεταξύ 1ης Ιανουαρίου 2020 και 1 Οκτωβρίου 2020 προωθούνται στο ιστολόγιό μου μαζί για να αποφύγετε τις επαναλαμβανόμενες ρυθμίσεις.
- server:
- port: 9001
-
- spring:
- application:
- name: gateway
- cloud:
- gateway:
- routes:
- - id: gateway-service
- uri: https://blog.csdn.net
- predicates:
- - Path=/huanzi833
- # - After=2019-01-01T00:00:00+08:00[Asia/Shanghai]
- # - Before=2021-01-01T00:00:00+08:00[Asia/Shanghai]
- - Between=2020-01-01T00:00:00+08:00[Asia/Shanghai], 2020-10-01T00:00:00+08:00[Asia/Shanghai]
- enabled: true
-
Για το Cookie, τα κατηγορήματα μπορούν να λάβουν δύο παραμέτρους, η μία είναι το όνομα cookie και η άλλη είναι κανονική έκφραση. δρομολόγηση θα εκτελεστεί Δεν θα εκτελεστεί.
- server:
- port: 9001
-
- spring:
- application:
- name: gateway
- cloud:
- gateway:
- routes:
- - id: gateway-service
- uri: https://blog.csdn.net
- predicates:
- - Path=/huanzi833
- # - After=2019-01-01T00:00:00+08:00[Asia/Shanghai]
- # - Before=2021-01-01T00:00:00+08:00[Asia/Shanghai]
- - Between=2020-01-01T00:00:00+08:00[Asia/Shanghai], 2020-10-01T00:00:00+08:00[Asia/Shanghai]
- - Cookie=uid, cherry #通过cookie进行路由规则的匹配
- enabled: true
-
Χρησιμοποιώντας την αντιστοίχιση δρομολόγησης cookie, μπορούμε να εισάγουμε cmd για δοκιμή και να εισάγουμε την ακόλουθη δήλωση στο cmd:
Παρόμοια με την αντιστοίχιση διαδρομής cookie, υπάρχουν επίσης δύο παράμετροι, ένα όνομα παραμέτρου και μια κανονική έκφραση, εάν δεν υπάρχει αντιστοίχιση, η διαδρομή δεν θα εκτελεστεί.
- server:
- port: 9001
-
- spring:
- application:
- name: gateway
- cloud:
- gateway:
- routes:
- - id: gateway-service
- uri: https://blog.csdn.net
- predicates:
- - Path=/huanzi833
- # - After=2019-01-01T00:00:00+08:00[Asia/Shanghai]
- # - Before=2021-01-01T00:00:00+08:00[Asia/Shanghai]
- - Between=2020-01-01T00:00:00+08:00[Asia/Shanghai], 2020-10-01T00:00:00+08:00[Asia/Shanghai]
- - Cookie=uid, cherry #通过cookie进行路由规则的匹配
- - Header=X-Request-Id, d+ #Header路由规则
- enabled: true
-
Εισαγάγετε cmd για δοκιμή, πληκτρολογήστε την ακόλουθη δήλωση στο cmd:
Η ακόλουθη διαμόρφωση αντιστοιχίζεται με τη διεύθυνση κεντρικού υπολογιστή, όπως www.csdn.net ή www.baidu.com ή blog.csdn.net και άλλες διευθύνσεις
- server:
- port: 9001
-
- spring:
- application:
- name: gateway
- cloud:
- gateway:
- routes:
- - id: gateway-service
- uri: https://blog.csdn.net
- predicates:
- - Path=/huanzi833
- # - After=2019-01-01T00:00:00+08:00[Asia/Shanghai]
- # - Before=2021-01-01T00:00:00+08:00[Asia/Shanghai]
- - Between=2020-01-01T00:00:00+08:00[Asia/Shanghai], 2020-10-01T00:00:00+08:00[Asia/Shanghai]
- - Cookie=uid, cherry #通过cookie进行路由规则的匹配
- - Header=X-Request-Id, d+ #Header路由规则
- - Host=**.csdn.net, **.baidu.com #Host路由规则
- enabled: true
-
Εισαγάγετε cmd για δοκιμή, πληκτρολογήστε την ακόλουθη δήλωση στο cmd:
- server:
- port: 9001
-
- spring:
- application:
- name: gateway
- cloud:
- gateway:
- routes:
- - id: gateway-service
- uri: https://blog.csdn.net
- predicates:
- - Path=/huanzi833
- # - After=2019-01-01T00:00:00+08:00[Asia/Shanghai]
- # - Before=2021-01-01T00:00:00+08:00[Asia/Shanghai]
- - Between=2020-01-01T00:00:00+08:00[Asia/Shanghai], 2020-10-01T00:00:00+08:00[Asia/Shanghai]
- - Cookie=uid, cherry #通过cookie进行路由规则的匹配
- - Header=X-Request-Id, d+ #Header路由规则
- - Host=**.csdn.net, **.baidu.com #Host路由规则
- - Method=GET, POST #Method路由规则
- enabled: true
-
Εισαγάγετε cmd για να εκτελέσετε τη δοκιμή Get Εισαγάγετε την ακόλουθη πρόταση στο cmd:
Εισαγάγετε cmd για να εκτελέσετε τη δοκιμή POST Εισαγάγετε την ακόλουθη δήλωση στο cmd: (Σημείωση: Εάν η διαδρομή στον ελεγκτή παρόχου υπηρεσιών χρησιμοποιεί το GetMapping και το -X POST χρησιμοποιείται εδώ κατά την κλήση, θα εμφανιστεί ένα 404).
Το κατηγόρημα υποστηρίζει επίσης δρομολόγηση ορίζοντας ένα αίτημα με συγκεκριμένο αριθμό διαστήματος IP, όπως 192.168.1.1/24 (όπου 192.168.1.1 είναι η διεύθυνση IP, 24 είναι η μάσκα υποδικτύου και 24 εδώ σημαίνει ότι η μάσκα υποδικτύου είναι 255.255.255.0 ). Μπορείτε να ορίσετε αυτήν τη διεύθυνση στην τοπική διεύθυνση IP για δοκιμή.
- server:
- port: 9001
-
- spring:
- application:
- name: gateway
- cloud:
- gateway:
- routes:
- - id: gateway-service
- uri: https://blog.csdn.net
- predicates:
- - Path=/huanzi833
- # - After=2019-01-01T00:00:00+08:00[Asia/Shanghai]
- # - Before=2021-01-01T00:00:00+08:00[Asia/Shanghai]
- - Between=2020-01-01T00:00:00+08:00[Asia/Shanghai], 2020-10-01T00:00:00+08:00[Asia/Shanghai]
- - Cookie=uid, cherry #通过cookie进行路由规则的匹配
- - Header=X-Request-Id, d+ #Header路由规则
- - Host=**.csdn.net, **.baidu.com #Host路由规则
- - Method=GET, POST #Method路由规则
- - RemoteAddr=192.168.1.1/24
- enabled: true
-
Η αντιστοίχιση διαδρομής διαδρομής/αντιστοιχία παραμέτρων/αντιστοιχία βάρους θα ολοκληρωθεί στην ενοποίηση με το παρακάτω κέντρο εγγραφής.
1. Πρώτα δημιουργήστε το κέντρο εξυπηρέτησης Eureka, ο κωδικός είναι ο εξής: