监控
网关
业务
堡垒机域名解析
server {
listen 80;
server_name wy.huiguanjia.cn;
return 301 https://wy.huiguanjia.cn$request_uri;
}
server {
listen 443;
server_name wy.huiguanjia.cn;
root html;
index index.html index.htm index.php;
ssl on;
ssl_certificate cert/wy.huiguanjia.cn.pem;
ssl_certificate_key cert/wy.huiguanjia.cn.key;
ssl_session_timeout 5m;
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_prefer_server_ciphers on;
location / {
proxy_pass http://172.16.0.246:3000/;
#Proxy Settings
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;
proxy_next_upstream error timeout invalid_header http_500 http_502 http_503 http_504;
proxy_max_temp_file_size 0;
proxy_connect_timeout 300;
proxy_send_timeout 300;
proxy_read_timeout 300;
proxy_buffer_size 4k;
proxy_buffers 4 32k;
proxy_busy_buffers_size 64k;
proxy_temp_file_write_size 64k;
}
}
server {
listen 3000;
server_name 127.0.0.1;
root html;
index index.html index.htm index.php;
location / {
root /data/bin/hgj2/web_publish/admin/public/;
index index.html;
try_files $uri $uri/ /index.html;
#Proxy Settings
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;
proxy_next_upstream error timeout invalid_header http_500 http_502 http_503 http_504;
proxy_max_temp_file_size 0;
proxy_connect_timeout 300;
proxy_send_timeout 300;
proxy_read_timeout 300;
proxy_buffer_size 4k;
proxy_buffers 4 32k;
proxy_busy_buffers_size 64k;
proxy_temp_file_write_size 64k;
}
location /9ad134a361f8d778/ {
proxy_pass http://127.0.0.1:8161/;
proxy_read_timeout 600;
}
location /ureport/res/ {
proxy_pass http://127.0.0.1:8161/ureport/res/;
}
location /ureport/preview/ {
proxy_pass http://127.0.0.1:8161/ureport/preview/;
}
}
location /9ad134a361f8d778/ {
proxy_pass http://127.0.0.1:8161/;
proxy_read_timeout 600;
}
// wisdom-gateway
// CustomGatewayFilter.java
public Mono<Void> filter(ServerWebExchange exchange, GatewayFilterChain chain){
....
}
# eureka
eureka.instance.status-page-url-path=/actuator/info
eureka.instance.health-check-url-path=/actuator/health
eureka.instance.home-page-url-path=/
eureka.client.service-url.defaultZone=http://${EUREKA_HOST:localhost}:${EUREKA_PORT:8162}/eureka/
## 表示eureka client间隔多久去拉取服务注册信息,默认为30秒,对于api-gateway,如果要迅速获取服务注册状态,可以缩小该值
eureka.client.registry-fetch-interval-seconds=5
## 表示eureka client发送心跳给server端的频率。如果在leaseExpirationDurationInSeconds后,server端没有收到client的心跳,则将摘除该instance
eureka.instance.lease-renewal-interval-in-seconds=30
## platform
spring.cloud.gateway.routes[0].id=wisdom-platform
spring.cloud.gateway.routes[0].uri=lb://wisdom-platform
spring.cloud.gateway.routes[0].predicates[0]=Path=/platform/**
spring.cloud.gateway.routes[0].filters[0]=GatewaySwaggerHeaderFilter
spring.cloud.gateway.routes[0].filters[1]=StripPrefix=1
## asset
spring.cloud.gateway.routes[1].id=wisdom-asset
spring.cloud.gateway.routes[1].uri=lb://wisdom-asset
spring.cloud.gateway.routes[1].predicates[0]=Path=/asset/**
spring.cloud.gateway.routes[1].filters[0]=GatewaySwaggerHeaderFilter
spring.cloud.gateway.routes[1].filters[1]=StripPrefix=1
## auth
spring.cloud.gateway.routes[2].id=wisdom-auth
spring.cloud.gateway.routes[2].uri=lb://wisdom-auth
spring.cloud.gateway.routes[2].predicates[0]=Path=/auth/**
spring.cloud.gateway.routes[2].filters[0]=GatewaySwaggerHeaderFilter
spring.cloud.gateway.routes[2].filters[1]=StripPrefix=1
## payment
spring.cloud.gateway.routes[3].id=wisdom-payment
spring.cloud.gateway.routes[3].uri=lb://wisdom-payment
spring.cloud.gateway.routes[3].predicates[0]=Path=/payment/**
spring.cloud.gateway.routes[3].filters[0]=GatewaySwaggerHeaderFilter
spring.cloud.gateway.routes[3].filters[1]=StripPrefix=1
## serve
spring.cloud.gateway.routes[4].id=wisdom-serve
spring.cloud.gateway.routes[4].uri=lb://wisdom-serve
spring.cloud.gateway.routes[4].predicates[0]=Path=/serve/**
spring.cloud.gateway.routes[4].filters[0]=GatewaySwaggerHeaderFilter
spring.cloud.gateway.routes[4].filters[1]=StripPrefix=1
## file
spring.cloud.gateway.routes[5].id=wisdom-file
spring.cloud.gateway.routes[5].uri=lb://wisdom-file
spring.cloud.gateway.routes[5].predicates[0]=Path=/file/**
spring.cloud.gateway.routes[5].filters[0]=GatewaySwaggerHeaderFilter
spring.cloud.gateway.routes[5].filters[1]=StripPrefix=1
## bill
spring.cloud.gateway.routes[6].id=wisdom-bill
spring.cloud.gateway.routes[6].uri=lb://wisdom-bill
spring.cloud.gateway.routes[6].predicates[0]=Path=/bill/**
spring.cloud.gateway.routes[6].filters[0]=GatewaySwaggerHeaderFilter
spring.cloud.gateway.routes[6].filters[1]=StripPrefix=1
## report
spring.cloud.gateway.routes[7].id=wisdom-report
spring.cloud.gateway.routes[7].uri=lb://wisdom-report
spring.cloud.gateway.routes[7].predicates[0]=Path=/report/**
spring.cloud.gateway.routes[7].filters[0]=GatewaySwaggerHeaderFilter
spring.cloud.gateway.routes[7].filters[1]=StripPrefix=1
## ureport
spring.cloud.gateway.routes[8].id=wisdom-report
spring.cloud.gateway.routes[8].uri=lb://wisdom-report
spring.cloud.gateway.routes[8].predicates[0]=Path=/ureport/**
spring.cloud.gateway.routes[8].filters[0]=GatewaySwaggerHeaderFilter
## log
spring.cloud.gateway.routes[9].id=wisdom-log
spring.cloud.gateway.routes[9].uri=lb://wisdom-log
spring.cloud.gateway.routes[9].predicates[0]=Path=/log/**
spring.cloud.gateway.routes[9].filters[0]=GatewaySwaggerHeaderFilter
spring.cloud.gateway.routes[9].filters[1]=StripPrefix=1
## task
spring.cloud.gateway.routes[10].id=wisdom-task
spring.cloud.gateway.routes[10].uri=lb://wisdom-task
spring.cloud.gateway.routes[10].predicates[0]=Path=/task/**
spring.cloud.gateway.routes[10].filters[0]=GatewaySwaggerHeaderFilter
spring.cloud.gateway.routes[10].filters[1]=StripPrefix=1
## hardware
spring.cloud.gateway.routes[11].id=wisdom-hardware
spring.cloud.gateway.routes[11].uri=lb://wisdom-hardware
spring.cloud.gateway.routes[11].predicates[0]=Path=/hardware/**
spring.cloud.gateway.routes[11].filters[0]=GatewaySwaggerHeaderFilter
spring.cloud.gateway.routes[11].filters[1]=StripPrefix=1
## hris
spring.cloud.gateway.routes[12].id=wisdom-hris
spring.cloud.gateway.routes[12].uri=lb://wisdom-hris
spring.cloud.gateway.routes[12].predicates[0]=Path=/hris/**
spring.cloud.gateway.routes[12].filters[0]=GatewaySwaggerHeaderFilter
spring.cloud.gateway.routes[12].filters[1]=StripPrefix=1
## app
spring.cloud.gateway.routes[13].id=wisdom-app
spring.cloud.gateway.routes[13].uri=lb://wisdom-app
spring.cloud.gateway.routes[13].predicates[0]=Path=/app/**
spring.cloud.gateway.routes[13].filters[0]=GatewaySwaggerHeaderFilter
spring.cloud.gateway.routes[13].filters[1]=StripPrefix=1
// wisdom-ds
// DsCustomerProcessor.java
// 从header获取数据源
((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest().getHeader("entCode");
// 从登陆会话获取数据源
UserInfoUtil.getUserDs();
// wisdom-common
// ControllerLoggerAspect.java
@Pointcut("@annotation(io.swagger.annotations.ApiOperation)")
public void controllerPointCut() {
}
@Around("controllerPointCut()")
public Object handlerControllerMethod(ProceedingJoinPoint pjp){
...
}
// wisdom-common
// PermissionInterceptor.java
实现小区、数据权限sql拦截
// wisdom-common
// PromiseExceptionHandler.java
@ExceptionHandler(PromiseException.class)
public ResponseEntity handleBizException(PromiseException ex) {
...
}
@ExceptionHandler(MethodArgumentNotValidException.class)
public ResponseEntity argumentNotValidException(MethodArgumentNotValidException ex) {
...
}
@ExceptionHandler(FeignException.class)
public ResponseEntity handleException(FeignException ex){
...
}
@ExceptionHandler(BindException.class)
public ResponseEntity handleException(BindException ex){
...
}
@ExceptionHandler(Exception.class)
public ResponseEntity handleException(Exception ex) {
...
}