技术文章 – Clrs http://192.168.0.138:8083 记录美好生活 Sat, 02 Apr 2022 23:32:35 +0000 zh-CN hourly 1 http://192.168.0.138:8083/wp-content/uploads/2022/04/cropped-无标题-32x32.png 技术文章 – Clrs http://192.168.0.138:8083 32 32 .Net core Worker Service 扩展库 http://192.168.0.138:8083/net-core-worker-service-%e6%89%a9%e5%b1%95%e5%ba%93/ Sat, 02 Apr 2022 23:31:37 +0000 http://192.168.0.138:8083/?p=39 .Net core Worker Service 扩展库,目的为更易控制每一个worker 的运行。

提供根据配置文件对每一个Worker的停止、启动和自动解析注册Worker。

获取配置的方式不限于 使用配置文件,也可以使用数据库,也可以使用 [WeTools.SqlSugarDBConfigProvider](NuGet Gallery | WeTools.SqlSugarDBConfigProvider 1.0.0) nuget包,读取数据库配置。

未来计划 增加一个轻量级的服务配置中心,更方便的管理服务。

获取地址:NuGet Gallery | WeTools.WorkerService 1.0.1  

1Install-Package WeTools.WorkerService -Version 1.0.1

方式1,worker 类型通过配置文件解析

  1. 在配置文件添加节点
"WeTools": {
    "Dir": "/", //worker 所在文件夹, 根目录为 / ;
    "Workers": [
      {
        "Name": "Worker2",
        "WorkerName": "Worker2",//具体的实现类名
        "Enable": true //此节点控制worker 的运行
      },
      {
        "Name": "Worker",
        "WorkerName": "Worker",
        "Enable": true
      }
 
    ]
  }
  1. 新建worker,并继承WeToolBackgroundService。
  2. 在Program类 ConfigureServices 里注册服务
services.AddServiceOptions(hostContext);
services.UseWorkers();

方式2 worker 通过特性解析

  1. 在配置文件添加节点
"WeTools": {
    "Worker": {
      "name":"testworker",//可选,默认为特性输入的名称
      "workername":"",//可选,默认为特性解析的worker类名
      "Enable": true
    },
    "Worker2":{
     "Enable": true
    }
  }

或者 自定义配置节点

"myconfig":
{
    "DemoWorker":
    {
        "name": "adf123",
        "Enable": true
    }
} 

或者 根节点下直接添加

"DemoWorker":
{
    "Enable": true
},
"DemoWorker2":
{
    "Enable": true
},

新建worker,继承WeToolBackgroundService 并在worker类添加特性

[Worker("DemoWorker")]
public class TestWorker : WeToolBackgroundService
{
}

3.在Program类 ConfigureServices 里注册服务

参数对应 1 中的配置 选择不同的方法。

这里不需要调用 AddServiceOptions 方法。

services.UseWorker(hostContext.Configuration);
services.UseWorker(hostContext);
services.UseWorker(hostContext.Configuration.GetSection("myconfig"));

现在即可启动程序。

]]>
Nginx configuration reverse proxy http://192.168.0.138:8083/nginx-configuration-reverse-proxy/ Sat, 02 Apr 2022 23:20:48 +0000 http://192.168.0.138:8083/?p=37 Reverse proxy

#PROXY-START/
location  ~* \.(php|jsp|cgi|asp|aspx)$
{
    proxy_pass https://clrs.me;
    proxy_set_header Host clrs.me;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header REMOTE-HOST $remote_addr;
    proxy_ssl_name clrs.me;
	proxy_ssl_server_name on;
    proxy_connect_timeout 300s;
	proxy_send_timeout 300s;
	proxy_read_timeout 300s;
}

location /
{
    proxy_pass https://clrs.me;
    proxy_set_header Host clrs.me;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header REMOTE-HOST $remote_addr;
     proxy_ssl_name clrs.me;
	proxy_ssl_server_name on;
    add_header X-Cache $upstream_cache_status;
    proxy_connect_timeout 300s;
	proxy_send_timeout 300s;
	proxy_read_timeout 300s;
    #Set Nginx Cache
    
    	add_header Cache-Control no-cache;
    expires 12h;
}

#PROXY-END/

Reverse proxy restricted path

#PROXY-START/
location  ~* \.(php|jsp|cgi|asp|aspx)$
{
    proxy_pass https://clrs.me;
    proxy_set_header Host clrs.me;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header REMOTE-HOST $remote_addr;
    proxy_ssl_name clrs.me;
	proxy_ssl_server_name on;
}
#according to routing config
location /3rd/pay
{
    proxy_pass https://clrs.me;
    proxy_set_header Host clrs.me;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header REMOTE-HOST $remote_addr;
    proxy_ssl_name clrs.me;
	proxy_ssl_server_name on;
    add_header X-Cache $upstream_cache_status;
    
    #Set Nginx Cache
    
    add_header Cache-Control no-cache;
    expires 12h;
}

#Match multiple routes
location ~* /3rd/(outtime|save).html
{
    proxy_pass https://clrs.me;
    proxy_set_header Host clrs.me;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header REMOTE-HOST $remote_addr;
    proxy_ssl_name clrs.me;
	proxy_ssl_server_name on;
    add_header X-Cache $upstream_cache_status;
    
    #Set Nginx Cache
    
    add_header Cache-Control no-cache;
    expires 12h;
}
]]>
php using regx to replace domain http://192.168.0.138:8083/php-using-regx-to-replace-domain/ Sat, 02 Apr 2022 23:17:34 +0000 http://192.168.0.138:8083/?p=33 use regx replace ‘
https://www.clrs.me/abc/index’
to ‘
https://www.muker.club/abc/index’


$a = preg_replace('/(https):\/\/([^\/]+)/i', 'https://www.muker.club','https://www.clrs.me/abc/index');

echo $a;

result is
https://www.muker.club/abc/index


]]>
Nginx configuration prohibits access to php scripts in the path http://192.168.0.138:8083/nginx-configuration-prohibits-access-to-php-scripts-in-the-path/ Sat, 02 Apr 2022 23:14:13 +0000 http://192.168.0.138:8083/?p=30 Nginx configuration prohibits access to php scripts in the path
Multiple path
Multiple suffixes

 #匹配多个上传目录
location ~ ^/(uploads|static|data|dist|docs|layer_mobile|layui|sldate|swagger)
{
        # 匹配文件最名包含两个.以上的文件
        location ~ "([.]{2,})$"
        {
                deny all;
        }
        # 配置php和php5后缀
        location ~ ".(php|php5)$"
        {
                deny all;
        }
}
]]>
Sourcetree forgot git account password http://192.168.0.138:8083/sourcetree-forgot-git-account-password/ Sat, 02 Apr 2022 23:09:27 +0000 http://192.168.0.138:8083/?p=26

When i want to push my new code to git,sourcetree alerts me an error.
msg show i don’t have auth, i remember i updated my password yesterday.
Where can I change the old password?
I use win10 os,so you can find the password at c disk.

C:\Users{your name}\AppData\Local\Atlassian\SourceTree\passwd

passwd file,open it and find your account,below the account is your password,delete it,save.

open sourcetree and push again,will show dialog ,input your new password .
sourcetree will work.
Done.


]]>