首页
归档
留言
广告合作
友链
美女主播
Search
1
博瑞GE车机升级/降级
5,146 阅读
2
Mac打印机设置黑白打印
4,517 阅读
3
修改elementUI中el-table树形结构图标
4,516 阅读
4
Mac客户端添加腾讯企业邮箱方法
4,351 阅读
5
intelliJ Idea 2022.2.X破解
4,060 阅读
Java
HarmonyOS Next
Web前端
微信开发
开发辅助
App开发
数据库
随笔日记
登录
/
注册
Search
标签搜索
Spring Boot
Java
Spring Cloud
Mac
mybatis
WordPress
Nacos
Spring Cloud Alibaba
Mybatis-Plus
jQuery
Java Script
asp.net
微信小程序
Sentinel
UniApp
MySQL
asp.net core
IntelliJ IDEA
Jpa
树莓派
Laughing
累计撰写
570
篇文章
累计收到
1,424
条评论
首页
栏目
Java
HarmonyOS Next
Web前端
微信开发
开发辅助
App开发
数据库
随笔日记
页面
归档
留言
广告合作
友链
美女主播
搜索到
3
篇与
的结果
2020-11-11
自建ngrok服务器,实现树莓派内网穿透
一、前言最近买了个树莓派4b 8g版本的,想着当作个人网盘使用。正好平时开发用的MySQL、nginx、redis等软件也可以放到树莓派上面跑了。二、准备材料服务器,用来搭建ngrok的服务器,必须有公网IP能正常访问。我用的是centos7.5域名,用来做映射。两个条件缺一不可。如何无法满足上述条件,只能去买别人搭建好的了,但是费用也不低。某网的是10元/月,但是现在腾讯云搞活动,云服务器平均一个月最低才7.3,而且不限制老用户。我其实也是今天薅了个羊毛。三、搭建配置域名比如我用lisen.me做映射,那么必须要配置好lisen.me还有*.lisen.me,将域名指向公网IP。安装git和Golang这个比较简单,直接执行下面的命令即可apt-get install build-essential golang mercurial git下载源码此处使用非官方地址,修复了部分包无法获取git clone https://github.com/tutumcloud/ngrok.git ngrok生成签名证书使用ngrok.com官方服务时,我们使用的是官方的SSL证书。自建ngrokd服务,如果不想买SSL证书,我们需要生成自己的自签名证书,并编译一个携带该证书的ngrok客户端。cd ngrok NGROK_DOMAIN="lisen.me" openssl genrsa -out base.key 2048 openssl req -new -x509 -nodes -key base.key -days 10000 -subj "/CN=$NGROK_DOMAIN" -out base.pem openssl genrsa -out server.key 2048 openssl req -new -key server.key -subj "/CN=$NGROK_DOMAIN" -out server.csr openssl x509 -req -in server.csr -CA base.pem -CAkey base.key -CAcreateserial -days 10000 -out server.crt注意替换域名:将lisen.me替换成自己的域名替换默认证书执行完成后需要替换证书cp base.pem assets/client/tls/ngrokroot.crt执行完命令后,会提示是否覆盖,输入y回车即可。编译服务端make release-server release-client运行服务端编译成功后会在bin目录下找到ngrokd和ngrok这两个文件。其中ngrokd 就是服务端程序了。./bin/ngrokd -tlsKey=server.key -tlsCrt=server.crt -domain="lisen.me" -httpAddr=":80" -httpsAddr=":443"注意替换域名httpAddr、httpsAddr 分别是 ngrok 用来转发 http、https 服务的端口,可以随意指定。ngrokd 还会开一个 4443 端口用来跟客户端通讯(可通过 -tunnelAddr=”:xxx” 指定)。编译客户端不同客户端编译方法不一样,我这里只介绍win和树莓派的8.1 windows 64位GOOS=windows GOARCH=amd64 make release-client 8.2 树莓派GOOS=linux GOARCH=arm make release-client执行对应的命令会在bin目录下生成相对应的windows和linux_arm的目录,客户端分别放到两个目录中。下载客户端到要穿透的电脑并配置因为我使用树莓派运行,所以下载linux_arm目录下的ngrok,然后上传到树莓派系统。配置客户端在ngrok同级目录创建文件ngrok.cfg,并配置信息,我配置的比较多,按需配置即可server_addr: lisen.me:4443 trust_host_root_certs: false tunnels: weixin: subdomain: www proto: http: 80 about: subdomain: seafile proto: http: 8000 ssh: remote_port: 222 proto: tcp: 22 vnc: remote_port: 5900 proto: tcp: 5900 mysql: remote_port: 3306 proto: tcp: 3306 redis: remote_port: 6379 proto: tcp: 6379 采用严格的单空格缩进,可以代理其他主机,直接跟端口默认是本主机,还要注意防火墙的配置。运行客户端./ngrok -config ngrok.cfg start-all启动后出现online字样说明内网穿透成功。四、配置服务端开机自启思路很简单,就是在/etc/systemd/system/目录下创建一个叫做ngrok.service的文件,然后写入一下代码:[Unit] Description=ngrok After=network.target [Service] Type=simple ExecStart=/usr/bin/ngrok/bin/ngrokd -tlsKey=/usr/bin/ngrok/server.key -tlsCrt=/usr/bin/ngrok/server.crt -domain="lisen.me" -httpAddr=:80 -httpsAddr=:443 > /dev/null 2>&1 & [Install] WantedBy=multi-user.target这样的话系统就会把我们的脚本识别为服务,然后我们就可以用systemctl这个工具来轻松管理ngrok的运行与启动。运行ngroksystemctl start ngrok查询ngrok状态systemctl status ngrok实现开机启动systemctl enable ngrok五、配置客户端开机自启思路很简单,就是在/etc/systemd/system/目录下创建一个叫做ngrok.service的文件,然后写入一下代码:[Unit] Description=ngrok After=network.target [Service] Type=simple ExecStart=/home/pi/ngrok/ngrok -config /home/pi/ngrok/ngrok.cfg start-all [Install] WantedBy=multi-user.target这样的话系统就会把我们的脚本识别为服务,然后我们就可以用systemctl这个工具来轻松管理ngrok的运行与启动。运行ngroksystemctl start ngrok查询ngrok状态systemctl status ngrok实现开机启动systemctl enable ngrok
2020年11月11日
1,602 阅读
0 评论
0 点赞
2020-09-28
Spring Boot 配合nginx完成跨域配置
在 springboot配置跨域 我们介绍了spring boot两种配置跨域的方式。实际项目中,我用的一般是通过nginx进行跨域设置。nginx跨域实现的几个目标肯定是能正常跨域访问为了方便跨域,我们一般对后台api进行封装,统一返回一个前缀作为区分我们先来实现第二个目标,统一后端返回的api地址。方法一、通过yaml配置通过配置文件设置server: servlet: context-path: /api这样,我们在前端的请求,都会自动加上'/api'前缀。但是这样的设置存在两个问题:所有的请求全部都是'/api'前缀。静态资源要求带'/api'前缀。所以,我们需要通过更优雅的方式来进行设置,也就是方法二。方法二、通过实现WebMvcConfigurer接口的configurePathMatch方法首先我们在配置文件,增加自定义的前缀#配置api前缀 request-path: api-path: /api注入配置信息/** * @author laughing * @date 2020/9/26 * @site https://www.xiangcaowuyu.net */ @Configuration @ConfigurationProperties(prefix = "request-path") @Data public class RequestPathProperties { private String apiPath; }增加自定义注解/** * @author laughing * @date 2020/9/26 * @site https://www.xiangcaowuyu.net */ @RestController @Target({ElementType.TYPE}) @Documented @RequestMapping @Retention(RetentionPolicy.RUNTIME) public @interface ApiRestController { /** * Alias for {@link RequestMapping#name}. */ @AliasFor(annotation = RequestMapping.class) String name() default ""; /** * Alias for {@link RequestMapping#value}. */ @AliasFor(annotation = RequestMapping.class) String[] value() default {}; /** * Alias for {@link RequestMapping#path}. */ @AliasFor(annotation = RequestMapping.class) String[] path() default {}; }增加实现WebMvcConfigurer的configurePathMatch方法,配置前缀/** * @author laughing * @date 2020/9/26 * @site https://www.xiangcaowuyu.net */ @Configuration public class MyWebMvcConfig implements WebMvcConfigurer { @Resource RequestPathProperties requestPathProperties; @Override public void configurePathMatch(PathMatchConfigurer configurer) { configurer.addPathPrefix(requestPathProperties.getApiPath(), c->c.isAnnotationPresent(ApiRestController.class)); } }经过如上配置,我们所有注解@ApiRestController的请求,都会增加'/api'前缀增加两个配置类,一个通过@ApiRestController注解,一个通过普通的@RestController注解,分别访问测试/** * @author laughing * @date 2020/9/26 * @site https://www.xiangcaowuyu.net */ @ApiRestController public class NginxCorsController { @RequestMapping("/nginxCors") public String nginxCors(){ return "nginxCors"; } }/** * @author laughing * @date 2020/9/26 * @site https://www.xiangcaowuyu.net */ @RestController public class NormalController { @RequestMapping("/normal") public String normal(){ return "normal"; } }支持,完成了spring boot后台统一api地址的目标nginx配置跨域前端代码我们先配置前端页面,发起一个简单的post请求<!DOCTYPE html> <html> <head> <title>Welcome to nginx!</title> <script src="https://cdn.staticfile.org/jquery/1.10.2/jquery.min.js"></script> </head> <body> <div id="myDiv"></div> <script> $(document).ready(function () { $.ajax({ url: "/api/nginxCors", type:"post", async: false, success:function(data){ $("#myDiv").html(data); } }); }); </script> </body> </html>nginx配置我们要配置的规则很简单,所有/api开头的请求,全部重定向到后端spring boot上。打开nginx配置文件,我这里使用的是默认的,及'nginx.conf'修改locationserver { listen 1234; server_name localhost; #charset koi8-r; #access_log logs/host.access.log main; #简单配置跨域 location /api { proxy_pass http://localhost:8080/api/; } location / { root html; index index.html index.htm; } #error_page 404 /404.html; # redirect server error pages to the static page /50x.html # error_page 500 502 503 504 /50x.html; location = /50x.html { root html; } # proxy the PHP scripts to Apache listening on 127.0.0.1:80 # #location ~ \.php$ { # proxy_pass http://127.0.0.1; #} # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000 # #location ~ \.php$ { # root html; # fastcgi_pass 127.0.0.1:9000; # fastcgi_index index.php; # fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name; # include fastcgi_params; #} # deny access to .htaccess files, if Apache's document root # concurs with nginx's one # #location ~ /\.ht { # deny all; #} }重新加载nginx配置文件这里用的win,linux需要对应替换命令nginx.exe -s reload打开页面测试,可以看到能够正常跨域
2020年09月28日
1,726 阅读
0 评论
0 点赞
2018-04-23
nginx:[emerg]unknown directive "ssl"
在centos中,配置nginx的https时,出现如下错误。nginx: [emerg] unknown directive "ssl" in /usr/local/nginx/conf/nginx.conf:102到解压的nginx目录下./configure --with-http_ssl_module当执行上面语句,出现./configure: error: SSL modules require the OpenSSL library.用yum -y install openssl openssl-devel再执行./configure重新执行./configure --with-http_ssl_modulemake切记不能make install 会覆盖。把原来nginx备份cp /usr/local/nginx/sbin/nginx /usr/local/nginx/sbin/nginx.bak把新的nginx覆盖旧的cp objs/nginx /usr/local/nginx/sbin/nginx出现错误时cp: cannot create regular file ‘/usr/local/nginx/sbin/nginx’: Text file busy用cp -rfp objs/nginx /usr/local/nginx/sbin/nginx解决测试nginx是否正确/usr/local/nginx/sbin/nginx -t(nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is oknginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful)重启nginx/usr/local/nginx/sbin/nginx -s reload
2018年04月23日
1,370 阅读
0 评论
1 点赞