现如今,硬件成本越来越低,在高可用,高性能,高并发越来越紧迫的时代,分布式微服务成为很多架构师不得不考虑的架构。所带来的问题也越来越复杂。
1. 前后端分离,跨域错误如何解决?
Access to XMLHttpRequest at 'http://192.168.1.3:8080/auth/login' from origin 'http://192.168.8.7' has been blocked by CORS policy: Response to preflight request doesn't pass access control check: No 'Access-Control-Allow-Origin' header is present on the requested resource.
1.1 服务端解决
/**
* 拦截器配置
*
* @author test
*/
public class WebMvcConfig implements WebMvcConfigurer{
@Override
public void addCorsMappings(CorsRegistry registry){
// 设置允许跨域的路径
registry.addMapping("/**")
// 设置允许跨域请求的域名
.allowedOrigins("")
// 是否允许证书
.allowCredentials(true)
// 设置允许的方法
.allowedMethods("GET", "POST", "DELETE", "PUT")
// 设置允许的header属性
.allowedHeaders("*")
// 跨域允许时间
.maxAge(3600);
}
}
1.2 前端解决(nginx)
/etc/nginx/nginx.conf
...
# 服务器端
server {
location /prod-api/{
add_header 'Access-Control-Allow-Origin' $http_origin;
add_header 'Access-Control-Allow-Credentials' 'true';
add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS';
add_header 'Access-Control-Allow-Headers' 'DNT,web-token,app-token,Authorization,Accept,Origin,Keep-Alive,User-Agent,X-Mx-ReqToken,X-Data-Type,X-Auth-Token,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Range';
add_header 'Access-Control-Expose-Headers' 'Content-Length,Content-Range';
if ($request_method = 'OPTIONS') {
add_header 'Access-Control-Max-Age' 3600;
add_header 'Content-Type' 'application/json; charset=utf-8';
add_header 'Content-Length' 0;
return 204;
}
}
}
...
1.3 网关解决
2 https协议本地如何测试?
借用 ngrok.com/ 的免费账号,本地安装客户端程序来测试就可
3 gitlab运行时间长了,会发生git占用cpu居高该怎么办?
首先,通过以下命令查看日志中是否发生错误。
cat /var/log/gitlab/gitlab-workhorse/current
3.1 子日志:Nginx
cat /var/log/gitlab/nginx/gitlab_access.log
3.2 子日志:redis-exporter
cat /var/log/gitlab/redis-exporter/current
3.3 子日志:gitlab-exporter
cat /var/log/gitlab/gitlab-exporter/current
3.4 子日志:redis
cat /var/log/gitlab/redis/current
3.5 问题发现
/var/opt/gitlab/gitlab-rails/sockets/gitlab.socket拒绝访问
3.6 解决思路
- 删除gitlab.socket
- 赋予git权限
chown -h git:git /opt/gitlab/embedded/service/gitlab-rails/.gitlab_workhorse_secret
chown git:git /var/opt/gitlab/gitlab-rails/etc/gitlab_workhorse_secret
- 重启服务
gitlab-ctl stop && gitlab-ctl restart && gitlab-ctl reconfigure
- 如果还没效果的话,可以重启机器
reboot