间接部署 - 在 Linux 上使用 Nginx 托管 ASP.NET Core 网站
                
注意:
对于 Ubuntu 14.04,建议使用 supervisord 监控 Kestrel 进程作为解决方案。对于 Ubuntu 14.04 的介绍,可以该话题的之前版本。
本指南包含以下内容:
使用反向代理服务器放置一个现存的 ASP.NET Core 应用程序
 设置反向代理服务器将请求转发到 Kestrel web 服务器
 保证 web 应用程序在启动时作为守护进程(daemon)运行
 配置一个进程管理工具帮助 web 应用程序重新启动
 先决条件
-  
使用带有 sudo 权限的标准用户账号访问 Ubuntu 16.04 服务器
 -  
在服务上安装 .NET Core 运行时。
a. 访问 Download .NET Core page
b. 选择一个最新非预览版的 .NET Core 版本
c. 下载表格中 Run apps - Runtime 最新非预览版本
d. 选择 Linux Package manager instructions 链接,按照你的版本的 Ubuntu 的说明进行操作
 -  
一个现存的 ASP.NET Core 应用程序
 
之后的任何时候,在升级完 shared framework 后,需要重新启动服务器托管的 ASP.NET Core 应用程序。
发布和复制应用程序
 配置应用程序为框架独立的部署。
如果应用程序在本地运行,并且没有配置安全连接(HTTPS),可以安装下面任意一种途径解决:
配置应用程序处理安全的本地连接。更多信息请查看 HTTPS configuration。
 从文件 Properties/launchSettings.json 中的属性 applicationUrl 中移除 https://localhost:5001(如果存在的话)
 在开发环境中运行 dotnet publish 打包应用程序到一个可以运行在服务器上的目录 (例如,bin/Release/{TARGET FRAMEWORK MONIKER}/publish,占位符 {TARGET FRAMEWORK MONIKER} 是目标框架名称) 中:
dotnet publish --configuration Release
 如果你不想在服务器上维护 .NET Core 运行时,应用程序也可以被发布为自包含部署(self-contained deployment)。
使用组织工作流中的工具(例如,SCP,SFTP)复制 ASP.NET Core 应用程序到服务器。通常把 web 应用程序放到 var 目录(例如:var/www/helloapp)。
注意
在生产部署环境中,一个持续集成的工作流完成发布和复制资源到服务器上。
测试服务器:
-  
从命令行运行应用程序:dotnet <app_assembly>.dll
 -  
在浏览器中,导航到 http://: 验证应用程序正常运行
 
配置反向代理服务器
 反向代理通常用来设置动态 web 应用程序服务。一个反向代理终结 HTTP 请求并转发给 ASP.NET Core 应用程序。
使用反向代理服务
 Kestrel 从 ASP.NET Core 服务动态内容是强大的,然而,web 服务能力并没有像 IIS,Apache,或者 Nginx 有很多特性。一个反向代理服务器可以从 HTTP 服务器分担一些工作,例如服务静态内容,缓存请求,压缩请求和 HTTPS 终结。反向代理服务器可能部署在专用机器上,也可能和 HTTP 服务器部署在同一台机器上。
出于本指南的目的,一个单独的 Nginx 实例被使用。它和 HTTP 服务运行在同一台服务器上。根据需求,不同的设置会被选择。
因为请求都被反向代理转发,使用 Microsoft.AspNetCore.HttpOverrides 包中的中间件 Forwarded Headers Middleware。这个中间件使用 X-Forwarded-Proto header 更新了 Request.Scheme,所以重定向 URIs和其它安全策略工作正确。
Forwarded Headers Middleware 应该在其它中间件之前运行。这个顺序保证了依赖 forwarded headers 信息的中间件可以在处理过程中使用 header 的值。在 diagnostics 和 错误处理中间件之后运行 Forwarded Headers Middleware,查看 Forwarded Headers Middleware order。
在调用其它中间件之前,在 Startup.Configure 的顶部调用 UseForwardedHeaders。配置中间件转发 X-Forwarded-For 和 X-Forwarded-Proto headers:
复制代码
 using Microsoft.AspNetCore.HttpOverrides;
…
app.UseForwardedHeaders(new ForwardedHeadersOptions
 {
 ForwardedHeaders = ForwardedHeaders.XForwardedFor | ForwardedHeaders.XForwardedProto
 });
app.UseAuthentication();
 复制代码
 如果没有中间件没有指定 ForwardedHeadersOptions,默认转发的 headers 是 None。
代理运行在回路地址 (127.0.0.0/8, [::]),包含标准本地地址 (127.0.01),默认是被信任的。如果其它的代理或者组织内的网络处理网络和 web 服务器之间的请求,可以使用 ForwardedHeadersOptions 把它们添加到 KnownProxies 或者 KnownNetworks 列表中。下面的实例在 Startup.ConfigureServices 中添加了一个 IP 地址为 10.0.0.100 可信任的代理到 Forwarded Header Middleware KnownProxies 中。
复制代码
 using System.Net;
…
services.Configure(options =>
 {
 options.KnownProxies.Add(IPAddress.Parse(“10.0.0.100”));
 });
 复制代码
 更多信息查看 Configure ASP.NET Core to work with proxy servers and load balancers。
安装 Nginx
 使用 apt-get 安装 Nginx。安装器创建一个 systemd 初始化脚本启动 Nginx 作为守护进程。按照下面 Ubuntu 安装 Nginx 说明操作:Official Debian/Ubuntu packages。
注意:
如果要求可选的 Nginx 模块,可能需要从源码编译 Nginx。
由于 Nginx 是第一次安装,运行下面的命令显式启动:
sudo service nginx start
 通过浏览器显示 Nginx 默认加载页验证 Nginx 是否正常。加载的页面 http://<server_IP_address>/index.nginx-debian.html 是可以访问的。
配置 Nginx
 为了配置 Nginx 作为一个反向代理转发 HTTP 请求到你的 ASP.NET Core 应用程序,需要修改 /etc/nginx/sites-available/default。使用文本编辑器打开它,使用下面的内容替换:
复制代码
 server {
 listen 80;
 server_name example.com *.example.com;
 location / {
 proxy_pass http://localhost:5000;
 proxy_http_version 1.1;
 proxy_set_header Upgrade $http_upgrade;
 proxy_set_header Connection keep-alive;
 proxy_set_header Host $host;
 proxy_cache_bypass $http_upgrade;
 proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
 proxy_set_header X-Forwarded-Proto $scheme;
 }
 }
 复制代码
 如果应用程序是 SingalR 或者 Blazor Server app,查看 ASP.NET Core SignalR production hosting and scaling 和 Host and deploy ASP.NET Core Blazor Serve。
如果没有 server_name 匹配,Nginx使用默认服务。如果没有定义默认的服务,配置文件中的第一个服务作为默认服务。作为最佳实践,在配置文件中添加一个返回 444 状态码的默认服务。一个默认的配置示例如下:
server {
 listen 80 default_server;
 # listen [::]:80 default_server deferred;
 return 444;
 }
 前面的配置文件和默认服务,Nginx 接受端口 80 上主机头为 example.com 或者 *.example.com 的流量。不匹配这些主机的请求将不会被转发到 Kestrel。Nginx 转发匹配的请求到 Kestrel 的 http://localhost:5000。更多信息查看 How nginx processes a request。更改 Kestrel 的 IP/端口。查看 Kestrel: Endpoint configuration。
注意:
没有合适的指定 server_name 指令会暴露你的应用程序的安全弱点。子域通配符绑定(例如,*.example.com)并不会造成安全问题,如果你控制了全部的父域(而不是 *.com,这个存在隐患)。更多信息查看rfc7230 section-5.4.。
Nginx 配置建立后,运行 sudo nginx -t 验证配置文件是否有语法错误。如果配置文件测试成功,可以运行 sudo nginx -s reload 强制 Nginx 使用修改后的配置。
直接在服务器上运行应用程序:
-  
导航到应用程序目录
 -  
运行应用程序:dotnet <app_assembly.dll>,app_assembly.dll 是应用程序程序集的文件名称。
 
如果应用程序在服务器上运行成功,但是通过网络访问失败,可以检查服务器的防火墙确认80端口已经打开。如果使用的是 Azure Ubuntu VM,添加一个网络安全组(NSG)规则确保80端口入站流量。不需要使能80端口出站规则,因为出站流量在入站规则使能的视情况会自动保证使能。
完成应用程序的测试后,Ctrl + C 关闭应用程序。
监视应用程序
 服务器被设置为转发指向 http://:80 的请求到运行在 Kestrel 地址为 http://127.0.0.1:5000 的 ASP.NET Core 应用程序上。然而,Nginx 没有被设置为管理 Kestrel 进程。systemd 可以被用来创建一个服务文件去启动和监视背后的 web 应用程序。systemd 是一个初始化系统,提供了很多强大的特性去启动,停止和管理进程。
创建一个服务文件
 创建一个服务定义文件:
sudo nano /etc/systemd/system/kestrel-helloapp.service
 下面是一个应用程序服务文件的示例:
复制代码
 [Unit]
 Description=Example .NET Web API App running on Ubuntu
[Service]
 WorkingDirectory=/var/www/helloapp
 ExecStart=/usr/bin/dotnet /var/www/helloapp/helloapp.dll
 Restart=always
Restart service after 10 seconds if the dotnet service crashes:
RestartSec=10
 KillSignal=SIGINT
 SyslogIdentifier=dotnet-example
 User=www-data
 Environment=ASPNETCORE_ENVIRONMENT=Production
 Environment=DOTNET_PRINT_TELEMETRY_MESSAGE=false
[Install]
 WantedBy=multi-user.target
 复制代码
 前面的这个例子中,管理服务的用户通过 User 选项指定。用户 (www-data)必须存在并且拥有应用程序文件的合适的权限。
使用 TimeoutStopSec 配置在应用程序关闭后收到初始中断信号等待的时长。如果应用程序这时没有关闭,SIGKILL 可以用来结束应用程序。可以提供不带单位的秒(例如,150),时间范围(例如,2min 30s),或者 infinity 禁用超时。TimeoutStopSed 默认值是 DefaultTimeoutStopSec 的值,存在于配置文件 (systemd-system.conf,system.conf.d,systemd-user.conf,user.conf.d)。大部分发行版的默认超时时间是 90 秒。
The default value is 90 seconds for most distributions.
TimeoutStopSec=90
 Linux 文件系统区分大小写。Production 被设置为 ASPNETCORE_ENVIRONMENT 会使得搜索配置文件 appsetting.Production.json,而不是appsetting.production.json。
某些值(例如, SQL 连接字符串)必须转义才能被配置提供器去读取环境变量。使用下面的命令生成一个在配置文件中使用的合适的转义值:
systemd-escape “”
 环境变量名称不支持冒号(:)分隔符。使用双下划线(__)代替冒号。Environment Variables configuration provider 在环境变量被读入配置的时候会转换双下划线为冒号。在下面的示例中,连接字符串键值 ConnectionStrings:DefaultConnection 在服务定义文件中被设置为: ConnectionStrings__DefaultConnection:
Environment=ConnectionStrings__DefaultConnection={Connection String}
 保存文件并且使能服务:
sudo systemctl enable kestrel-helloapp.service
 启动服务,验证运行:
复制代码
 sudo systemctl start kestrel-helloapp.service
 sudo systemctl status kestrel-helloapp.service
? kestrel-helloapp.service - Example .NET Web API App running on Ubuntu
 Loaded: loaded (/etc/systemd/system/kestrel-helloapp.service; enabled)
 Active: active (running) since Thu 2016-10-18 04:09:35 NZDT; 35s ago
 Main PID: 9021 (dotnet)
 CGroup: /system.slice/kestrel-helloapp.service
 └─9021 /usr/local/bin/dotnet /var/www/helloapp/helloapp.dll
 复制代码
 使用反向代理配置,Kestrel 通过 systemd 管理,web 应用程序已经完全配置好,可以在本机的浏览器中访问 http://localhost。也可以通过远程主机访问,除非是有防火墙的阻塞。检查返回头部,Server 头部显示的是 ASP.NET Core 应用程序托管在 Kestrel 上。
复制代码
 HTTP/1.1 200 OK
 Date: Tue, 11 Oct 2016 16:22:23 GMT
 Server: Kestrel
 Keep-Alive: timeout=5, max=98
 Connection: Keep-Alive
 Transfer-Encoding: chunked
 复制代码
 浏览日志
 由于 web 应用程序使用的 Kestrel 通过 systemd 管理,所有的事件和处理过程都被记录到中心日志中。然而,这个日志包含所有 systemd 管理的服务和进程的所有条目的日志。要查看 kestrel-ledinpro.service 的条目,使用下面的命令:
sudo journalctl -fu kestrel-helloapp.service
 更进一步的筛选,时间选项,例如 --since today,until 1 hour ago,或者这些的结合可以减少返回条目的数量:
sudo journalctl -fu kestrel-helloapp.service --since “2016-10-18” --until “2016-10-18 04:00”
 数据保护
 ASP.NET Core Data Protection stack 被多个 ASP.NET Core 中间件使用,包含认证中间件(例如,cookie 中间件)和跨站请求伪造(CSRF)保护。即使数据保护 APIs 不被用户代码调用,数据保护也应该创建一个持久加密的键值存储配置。如果数据保护没有配置,在内存中的键值在应用程序重启的时候就会被丢弃。
如果 key ring 存储在内存中,当应用程序重启的时候就会:
所有基于 cooked 的认证 tokens 都会失效
 用户在他们下一次请求的时候会被要求再次登录
 任何使用 key ring 的数据保护不再能被解密。这可能包含 CSRF tokens 和 ASP.NET Core MVC TempData cookies。
 为了配置数据保护持久化和加密 key ring,请查看:
Key storage providers in ASP.NET Core
 Key encryption at rest in Windows and Azure using ASP.NET Core
 长请求头部区域
 代理服务器默认设置根据平台请求头部区域限制通常是 4K 或者 8K 大小。应用程序可能要求比默认大小更长的请求头部(例如,使用 Azure Active Directory 的应用程序)。如果更长的请求头部要求,代理服务器的默认设置就需要调整。应用的数值根据情况而定。更多信息,请查看服务器文档:
proxy_buffer_size
 proxy_buffers
 proxy_busy_buffers_size
 large_client_header_buffers
 注意:
除非有必要,否则不要增加代理 buffers 的大小。增加这些值增大了 buffer 溢出的风险和 被恶意用户的拒绝服务 Denial of Service(Dos) 攻击。
保护应用程序
 使能 AppArmor
 Linux Security Modules(LSM) 是一个框架,自 Linux 2.6 版本依赖就是 Linux 内核的一部分。LSM 支持安全模块的不同实现。AppArmor 实现了 Mandatory Access Control 系统的一种 LSM,它允许限制程序访问有限的资源集合。确保 AppArmor 使能是合适的配置。
配置防火墙
 关闭所有用不到的端口。Uncomplicated firewall (ufw) 通过提供了 CLI 配置防火墙为 iptable 提供了一个前端。
警告:
如果配置不正确,防火墙将会阻止访问整个系统。错误的指定 SSH 端口将会将你锁定在系统外,如果你使用 SSH 去连接它。默认端口是 22。更多信息请查看 introduction to ufw 和 manual。
安装 ufw,在需要的端口上配置允许流量:
复制代码
 sudo apt-get install ufw
sudo ufw allow 22/tcp
 sudo ufw allow 80/tcp
 sudo ufw allow 443/tcp
sudo ufw enable
 复制代码
 保护 Nginx
 修改 Nginx 返回名称
 编辑 src/http/ngx_http_header_filter_module.c:
static char ngx_http_server_string[] = “Server: Web Server” CRLF;
 static char ngx_http_server_full_string[] = “Server: Web Server” CRLF;
 配置选项
 使用更多要求的模块配置服务。考虑使用 web 应用程序防火墙加固应用程序,例如 ModSecurity。
HTTPS 配置
 配置应用程序安全 (HTTPS) 的本地连接
 dotnet run 命令使用应用程序的 Properties/launchSettings.json 文件,这个文件配置应用程序在由 applicationUrl 属性提供的 URLs 上面监听。例如,https://localhost;http://localhost:5000。
配置应用程序在开发中 dotnet run 命令或者在开发环境中(F5 or Ctrl + F5 在 Visual Studio Code) 中使用一个证书,可以使用以下途径之一:
Replace the default certificate from configuration (推荐的)
 KestrelServerOptions.ConfigureHttpsDefaults
 配置反向代理安全(HTTPS)的客户端连接
 通过指定一个受信任的证书颁发机构的有效证书,配置服务在 443 端口上监听 HTTPS 流量
 利用 /etc/nginx/nginx.conf 文件中的一些实践描述加强安全。例子包含了选择一个强加密和重定向HTTP上所有的流量到 HTTPS。
 注意
对于开发环境,我们建议使用临时重定向(302)而不是永久重定向(301)。链接缓存可能在开发环境中导致不稳定的行为。
添加一个 HTTP Strict-Transport-Security(HSTS)头部保证客户端随后的所有请求都使用 HTTPS。
 更多关于 HSTS 的指南,请查看 Enforce HTTPS in ASP.NET Core
 如果在以后不使用 HTTPS 了,可以使用下面其中之一的方法:
- 不要添加 HSTS 头部
 - 选择一个更短的 max-age 值
添加 /etc/nginx/proxy.conf 配置文件: 
复制代码
 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_set_header X-Forwarded-Proto $scheme;
 client_max_body_size 10m;
 client_body_buffer_size 128k;
 proxy_connect_timeout 90;
 proxy_send_timeout 90;
 proxy_read_timeout 90;
 proxy_buffers 32 4k;
 复制代码
 使用下面的内容替换 /etc/nginx/nginx.conf 配置文件的内容。下面的示例在一个配置文件中包含 http 和 server 部分:
复制代码
 http {
 include /etc/nginx/proxy.conf;
 limit_req_zone $binary_remote_addr zone=one:10m rate=5r/s;
 server_tokens off;
sendfile on;
keepalive_timeout   29; # Adjust to the lowest possible value that makes sense for your use case.
client_body_timeout 10; client_header_timeout 10; send_timeout 10;
upstream helloapp{
    server localhost:5000;
}
server {
    listen     80;
    return     301 https://$host$request_uri;
}
server {
    listen                    443 ssl;
    server_name               example.com *.example.com;
    ssl_certificate           /etc/ssl/certs/testCert.crt;
    ssl_certificate_key       /etc/ssl/certs/testCert.key;
    ssl_protocols             TLSv1.1 TLSv1.2;
    ssl_prefer_server_ciphers on;
    ssl_ciphers               "EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH";
    ssl_ecdh_curve            secp384r1;
    ssl_session_cache         shared:SSL:10m;
    ssl_session_tickets       off;
    ssl_stapling              on; #ensure your cert is capable
    ssl_stapling_verify       on; #ensure your cert is capable
    add_header Strict-Transport-Security "max-age=63072000; includeSubdomains; preload";
    add_header X-Frame-Options DENY;
    add_header X-Content-Type-Options nosniff;
    #Redirects all traffic
    location / {
        proxy_pass http://helloapp;
        limit_req  zone=one burst=10 nodelay;
    }
}
}
 复制代码
 注意:
Blazor WebAssembly 应用程序要求更大的 burst 参数以适应应用程序更大数量的请求。更多信息,查看 Host and deploy ASP.NET Core Blazor WebAssembly。
Secure Nginx from clickjacking
 Clickjacking,也被称为界面不久攻击,是一种恶意攻击,访客被欺骗在一个不同的页面上点击一个链接或者按钮,而不是在当前正在访问的页面。使用 X-FRAME-OPTIONS 保护站点。
为了减轻点击劫持攻击:
- 编辑 nginx.conf 文件:
 
sudo nano /etc/nginx/nginx.conf
 添加行:add_header X-Frame-Options “SAMEORIGIN”;
-  
保存文件
 -  
重启 Nginx
 
MIME-type 嗅探
 这个头部阻止大多数的浏览器嗅探一个离开声明内容类型的返回,由于头部指示浏览器不要覆盖返回内容的类型。使用 nosniff 选项,如果服务说内容是 text/html,那么浏览器就渲染为 text/html。
- 变价 nginx.conf 文件:
 
github.com/users/usjdjwnodw/projects/79
 github.com/users/usjdjwnodw/projects/79?fullscreen=true
 github.com/users/usjdjwnodw/projects/79?mw3Mc
 github.com/users/usjdjwnodw/projects/79?hrhvf
 github.com/users/usjdjwnodw/projects/79?25036
 github.com/users/usjdjwnodw/projects/80
 github.com/users/usjdjwnodw/projects/80?fullscreen=true
 github.com/users/usjdjwnodw/projects/80?Lv8dm
 github.com/users/usjdjwnodw/projects/80?nxozz
 github.com/users/usjdjwnodw/projects/80?15169
 github.com/users/usjdjwnodw/projects/81
 github.com/users/usjdjwnodw/projects/81?fullscreen=true
 github.com/users/usjdjwnodw/projects/81?oEVeE
 github.com/users/usjdjwnodw/projects/81?tuyvx
 github.com/users/usjdjwnodw/projects/81?33685
 github.com/users/usjdjwnodw/projects/82
 github.com/users/usjdjwnodw/projects/82?fullscreen=true
 github.com/users/usjdjwnodw/projects/82?q8IdM
 github.com/users/usjdjwnodw/projects/82?cedvz
 github.com/users/usjdjwnodw/projects/82?50260
 github.com/users/usjdjwnodw/projects/83
 github.com/users/usjdjwnodw/projects/83?fullscreen=true
 github.com/users/usjdjwnodw/projects/83?vWcWr
 github.com/users/usjdjwnodw/projects/83?daszn
 github.com/users/usjdjwnodw/projects/83?08235
 github.com/users/usjdjwnodw/projects/84
 github.com/users/usjdjwnodw/projects/84?fullscreen=true
 github.com/users/usjdjwnodw/projects/84?X13cn
 github.com/users/usjdjwnodw/projects/84?qkdwa
 github.com/users/usjdjwnodw/projects/84?79916
 github.com/users/usjdjwnodw/projects/85
 github.com/users/usjdjwnodw/projects/85?fullscreen=true
 github.com/users/usjdjwnodw/projects/85?o237T
 github.com/users/usjdjwnodw/projects/85?ountt
 github.com/users/usjdjwnodw/projects/85?63572
 github.com/users/usjdjwnodw/projects/86
 github.com/users/usjdjwnodw/projects/86?fullscreen=true
 github.com/users/usjdjwnodw/projects/86?xHG3g
 github.com/users/usjdjwnodw/projects/86?dlyew
 github.com/users/usjdjwnodw/projects/86?44463
 github.com/users/usjdjwnodw/projects/87
 github.com/users/usjdjwnodw/projects/87?fullscreen=true
 github.com/users/usjdjwnodw/projects/87?6LCn8
 github.com/users/usjdjwnodw/projects/87?ysdro
 github.com/users/usjdjwnodw/projects/87?67122
 github.com/users/usjdjwnodw/projects/88
 github.com/users/usjdjwnodw/projects/88?fullscreen=true
 github.com/users/usjdjwnodw/projects/88?Xi57M
 github.com/users/usjdjwnodw/projects/88?uecic
 github.com/users/usjdjwnodw/projects/88?39241
 github.com/users/usjdjwnodw/projects/89
 github.com/users/usjdjwnodw/projects/89?fullscreen=true
 github.com/users/usjdjwnodw/projects/89?bbWHa
 github.com/users/usjdjwnodw/projects/89?pmyki
 github.com/users/usjdjwnodw/projects/89?59840
 github.com/users/usjdjwnodw/projects/90
 github.com/users/usjdjwnodw/projects/90?fullscreen=true
 github.com/users/usjdjwnodw/projects/90?tvrgM
 github.com/users/usjdjwnodw/projects/90?smpxj
 github.com/users/usjdjwnodw/projects/90?26670
 github.com/users/usjdjwnodw/projects/91
 github.com/users/usjdjwnodw/projects/91?fullscreen=true
 github.com/users/usjdjwnodw/projects/91?LX6W5
 github.com/users/usjdjwnodw/projects/91?rvtzu
 github.com/users/usjdjwnodw/projects/91?55352
 github.com/users/usjdjwnodw/projects/92
 github.com/users/usjdjwnodw/projects/92?fullscreen=true
 github.com/users/usjdjwnodw/projects/92?Q895y
 github.com/users/usjdjwnodw/projects/92?yatrb
 github.com/users/usjdjwnodw/projects/92?04660
 github.com/users/usjdjwnodw/projects/93
 github.com/users/usjdjwnodw/projects/93?fullscreen=true
 github.com/users/usjdjwnodw/projects/93?ef1Jo
 github.com/users/usjdjwnodw/projects/93?gyzbb
 github.com/users/usjdjwnodw/projects/93?04843
 github.com/users/usjdjwnodw/projects/94
 github.com/users/usjdjwnodw/projects/94?fullscreen=true
 github.com/users/usjdjwnodw/projects/94?zuL27
 github.com/users/usjdjwnodw/projects/94?friyk
 github.com/users/usjdjwnodw/projects/94?78506
 github.com/users/usjdjwnodw/projects/95
 github.com/users/usjdjwnodw/projects/95?fullscreen=true
 github.com/users/usjdjwnodw/projects/95?4Bq7k
 github.com/users/usjdjwnodw/projects/95?cwont
 github.com/users/usjdjwnodw/projects/95?58498
 github.com/users/usjdjwnodw/projects/96
 github.com/users/usjdjwnodw/projects/96?fullscreen=true
 github.com/users/usjdjwnodw/projects/96?OEGna
 github.com/users/usjdjwnodw/projects/96?eokoq
 github.com/users/usjdjwnodw/projects/96?01676
 github.com/users/usjdjwnodw/projects/97
 github.com/users/usjdjwnodw/projects/97?fullscreen=true
 github.com/users/usjdjwnodw/projects/97?08Y8t
 github.com/users/usjdjwnodw/projects/97?fvtka
 github.com/users/usjdjwnodw/projects/97?71580
 github.com/users/usjdjwnodw/projects/98
 github.com/users/usjdjwnodw/projects/98?fullscreen=true
 github.com/users/usjdjwnodw/projects/98?As5q7
 github.com/users/usjdjwnodw/projects/98?iyymv
 github.com/users/usjdjwnodw/projects/98?74436
 github.com/users/usjdjwnodw/projects/99
 github.com/users/usjdjwnodw/projects/99?fullscreen=true
 github.com/users/usjdjwnodw/projects/99?LHPQI
 github.com/users/usjdjwnodw/projects/99?aqejd
 github.com/users/usjdjwnodw/projects/99?71682
 github.com/users/usjdjwnodw/projects/100
 github.com/users/usjdjwnodw/projects/100?fullscreen=true
 github.com/users/usjdjwnodw/projects/100?60RKb
 github.com/users/usjdjwnodw/projects/100?sojbt
 github.com/users/usjdjwnodw/projects/100?14658
 github.com/users/usjdjwnodw/projects/101
 github.com/users/usjdjwnodw/projects/101?fullscreen=true
 github.com/users/usjdjwnodw/projects/101?Qw721
 github.com/users/usjdjwnodw/projects/101?smogp
 github.com/users/usjdjwnodw/projects/101?20792
 github.com/users/usjdjwnodw/projects/102
 github.com/users/usjdjwnodw/projects/102?fullscreen=true
 github.com/users/usjdjwnodw/projects/102?4ynyM
 github.com/users/usjdjwnodw/projects/102?cnqqq
 github.com/users/usjdjwnodw/projects/102?86396
 github.com/users/usjdjwnodw/projects/103
 github.com/users/usjdjwnodw/projects/103?fullscreen=true
 github.com/users/usjdjwnodw/projects/103?k68ha
 github.com/users/usjdjwnodw/projects/103?shbcq
 github.com/users/usjdjwnodw/projects/103?19968
 github.com/users/usjdjwnodw/projects/104
 github.com/users/usjdjwnodw/projects/104?fullscreen=true
 github.com/users/usjdjwnodw/projects/104?44yNw
 github.com/users/usjdjwnodw/projects/104?oirvh
 github.com/users/usjdjwnodw/projects/104?93630
 github.com/users/usjdjwnodw/projects/105
 github.com/users/usjdjwnodw/projects/105?fullscreen=true
 github.com/users/usjdjwnodw/projects/105?Mxseu
 github.com/users/usjdjwnodw/projects/105?aawfj
 github.com/users/usjdjwnodw/projects/105?63437
 github.com/users/usjdjwnodw/projects/106
 github.com/users/usjdjwnodw/projects/106?fullscreen=true
 github.com/users/usjdjwnodw/projects/106?B21n2
 github.com/users/usjdjwnodw/projects/106?nxzgc
 github.com/users/usjdjwnodw/projects/106?33761
 github.com/users/usjdjwnodw/projects/107
 github.com/users/usjdjwnodw/projects/107?fullscreen=true
 github.com/users/usjdjwnodw/projects/107?LJ8E7
 github.com/users/usjdjwnodw/projects/107?uyznf
 github.com/users/usjdjwnodw/projects/107?98899
 github.com/users/usjdjwnodw/projects/108
 github.com/users/usjdjwnodw/projects/108?fullscreen=true
 github.com/users/usjdjwnodw/projects/108?ZJG9R
 github.com/users/usjdjwnodw/projects/108?mhpmu
 github.com/users/usjdjwnodw/projects/108?63800
 github.com/users/usjdjwnodw/projects/109
 github.com/users/usjdjwnodw/projects/109?fullscreen=true
 github.com/users/usjdjwnodw/projects/109?1fZ8u
 github.com/users/usjdjwnodw/projects/109?scynq
 github.com/users/usjdjwnodw/projects/109?60254
 github.com/users/usjdjwnodw/projects/110
 github.com/users/usjdjwnodw/projects/110?fullscreen=true
 github.com/users/usjdjwnodw/projects/110?7bIv6
 github.com/users/usjdjwnodw/projects/110?hhftt
 github.com/users/usjdjwnodw/projects/110?41535
 github.com/users/usjdjwnodw/projects/111
 github.com/users/usjdjwnodw/projects/111?fullscreen=true
 github.com/users/usjdjwnodw/projects/111?1a8D6
 github.com/users/usjdjwnodw/projects/111?girof
 github.com/users/usjdjwnodw/projects/111?78265
 github.com/users/usjdjwnodw/projects/112
 github.com/users/usjdjwnodw/projects/112?fullscreen=true
 github.com/users/usjdjwnodw/projects/112?Z8ZWH
 github.com/users/usjdjwnodw/projects/112?xiiqd
 github.com/users/usjdjwnodw/projects/112?86964
 github.com/users/usjdjwnodw/projects/113
 github.com/users/usjdjwnodw/projects/113?fullscreen=true
 github.com/users/usjdjwnodw/projects/113?wC54D
 github.com/users/usjdjwnodw/projects/113?sknll
 github.com/users/usjdjwnodw/projects/113?15615
 github.com/users/usjdjwnodw/projects/114
 github.com/users/usjdjwnodw/projects/114?fullscreen=true
 github.com/users/usjdjwnodw/projects/114?b7c63
 github.com/users/usjdjwnodw/projects/114?cocev
 github.com/users/usjdjwnodw/projects/114?17074
 github.com/users/usjdjwnodw/projects/115
 github.com/users/usjdjwnodw/projects/115?fullscreen=true
 github.com/users/usjdjwnodw/projects/115?9l8jU
 github.com/users/usjdjwnodw/projects/115?rbiaa
 github.com/users/usjdjwnodw/projects/115?24396
 github.com/users/usjdjwnodw/projects/116
 github.com/users/usjdjwnodw/projects/116?fullscreen=true
 github.com/users/usjdjwnodw/projects/116?W5CCh
 github.com/users/usjdjwnodw/projects/116?euxdl
 github.com/users/usjdjwnodw/projects/116?55833
 github.com/users/usjdjwnodw/projects/117
 github.com/users/usjdjwnodw/projects/117?fullscreen=true
 github.com/users/usjdjwnodw/projects/117?4C6S2
 github.com/users/usjdjwnodw/projects/117?dlblt
 github.com/users/usjdjwnodw/projects/117?09227
 github.com/users/usjdjwnodw/projects/118
 github.com/users/usjdjwnodw/projects/118?fullscreen=true
 github.com/users/usjdjwnodw/projects/118?4dp6q
 github.com/users/usjdjwnodw/projects/118?sgorn
 github.com/users/usjdjwnodw/projects/118?20605
 github.com/users/usjdjwnodw/projects/119
 github.com/users/usjdjwnodw/projects/119?fullscreen=true
 github.com/users/usjdjwnodw/projects/119?483MS
 github.com/users/usjdjwnodw/projects/119?nfaqa
 github.com/users/usjdjwnodw/projects/119?57055
 github.com/users/usjdjwnodw/projects/120
 github.com/users/usjdjwnodw/projects/120?fullscreen=true
 github.com/users/usjdjwnodw/projects/120?MEcr0
 github.com/users/usjdjwnodw/projects/120?qikfn
 github.com/users/usjdjwnodw/projects/120?16654
 github.com/users/usjdjwnodw/projects/121
 github.com/users/usjdjwnodw/projects/121?fullscreen=true
 github.com/users/usjdjwnodw/projects/121?64e5M
 github.com/users/usjdjwnodw/projects/121?gcdrz
 github.com/users/usjdjwnodw/projects/121?97105
 github.com/users/usjdjwnodw/projects/122
 github.com/users/usjdjwnodw/projects/122?fullscreen=true
 github.com/users/usjdjwnodw/projects/122?Nz87O
 github.com/users/usjdjwnodw/projects/122?fruum
 github.com/users/usjdjwnodw/projects/122?39349
 github.com/users/usjdjwnodw/projects/123
 github.com/users/usjdjwnodw/projects/123?fullscreen=true
 github.com/users/usjdjwnodw/projects/123?me3WY
 github.com/users/usjdjwnodw/projects/123?djsks
 github.com/users/usjdjwnodw/projects/123?32878
 github.com/users/usjdjwnodw/projects/124
 github.com/users/usjdjwnodw/projects/124?fullscreen=true
 github.com/users/usjdjwnodw/projects/124?D1SIZ
 github.com/users/usjdjwnodw/projects/124?aqfja
 github.com/users/usjdjwnodw/projects/124?66095
 github.com/users/usjdjwnodw/projects/125
 github.com/users/usjdjwnodw/projects/125?fullscreen=true
 github.com/users/usjdjwnodw/projects/125?yAt69
 github.com/users/usjdjwnodw/projects/125?iyubr
 github.com/users/usjdjwnodw/projects/125?88976
 github.com/users/usjdjwnodw/projects/126
 github.com/users/usjdjwnodw/projects/126?fullscreen=true
 github.com/users/usjdjwnodw/projects/126?O0hur
 github.com/users/usjdjwnodw/projects/126?lpltn
 github.com/users/usjdjwnodw/projects/126?88683
 github.com/users/usjdjwnodw/projects/127
 github.com/users/usjdjwnodw/projects/127?fullscreen=true
 github.com/users/usjdjwnodw/projects/127?1Z66P
 github.com/users/usjdjwnodw/projects/127?aufgm
 github.com/users/usjdjwnodw/projects/127?46612
 github.com/users/usjdjwnodw/projects/128
 github.com/users/usjdjwnodw/projects/128?fullscreen=true
 github.com/users/usjdjwnodw/projects/128?QjgQA
 github.com/users/usjdjwnodw/projects/128?nzsku
 github.com/users/usjdjwnodw/projects/128?19967
 github.com/users/usjdjwnodw/projects/129
 github.com/users/usjdjwnodw/projects/129?fullscreen=true
 github.com/users/usjdjwnodw/projects/129?T4574
 github.com/users/usjdjwnodw/projects/129?rpzgc
 github.com/users/usjdjwnodw/projects/129?60405
 github.com/users/usjdjwnodw/projects/130
 github.com/users/usjdjwnodw/projects/130?fullscreen=true
 github.com/users/usjdjwnodw/projects/130?rrkJG
 github.com/users/usjdjwnodw/projects/130?hlqqs
 github.com/users/usjdjwnodw/projects/130?66296
 github.com/users/usjdjwnodw/projects/131
 github.com/users/usjdjwnodw/projects/131?fullscreen=true
 github.com/users/usjdjwnodw/projects/131?2UvyF
 github.com/users/usjdjwnodw/projects/131?rrjxo
 github.com/users/usjdjwnodw/projects/131?67187
 github.com/users/usjdjwnodw/projects/132
 github.com/users/usjdjwnodw/projects/132?fullscreen=true
 github.com/users/usjdjwnodw/projects/132?8rpwK
 github.com/users/usjdjwnodw/projects/132?zbqia
 github.com/users/usjdjwnodw/projects/132?55240
 github.com/users/usjdjwnodw/projects/133
 github.com/users/usjdjwnodw/projects/133?fullscreen=true
 github.com/users/usjdjwnodw/projects/133?0ypu6
 github.com/users/usjdjwnodw/projects/133?kgdpm
 github.com/users/usjdjwnodw/projects/133?57320
 github.com/users/usjdjwnodw/projects/134
 github.com/users/usjdjwnodw/projects/134?fullscreen=true
 github.com/users/usjdjwnodw/projects/134?PP6fR
 github.com/users/usjdjwnodw/projects/134?eklft
 github.com/users/usjdjwnodw/projects/134?09527
 github.com/users/usjdjwnodw/projects/135
 github.com/users/usjdjwnodw/projects/135?fullscreen=true
 github.com/users/usjdjwnodw/projects/135?T6dMA
 github.com/users/usjdjwnodw/projects/135?avtzy
 github.com/users/usjdjwnodw/projects/135?64114
 github.com/users/usjdjwnodw/projects/136
 github.com/users/usjdjwnodw/projects/136?fullscreen=true
 github.com/users/usjdjwnodw/projects/136?xZsFv
 github.com/users/usjdjwnodw/projects/136?gmpwi
 github.com/users/usjdjwnodw/projects/136?11100
 github.com/users/usjdjwnodw/projects/137
 github.com/users/usjdjwnodw/projects/137?fullscreen=true
 github.com/users/usjdjwnodw/projects/137?4Ke9i
 github.com/users/usjdjwnodw/projects/137?gself
 github.com/users/usjdjwnodw/projects/137?91644
 github.com/users/usjdjwnodw/projects/138
 github.com/users/usjdjwnodw/projects/138?fullscreen=true
 github.com/users/usjdjwnodw/projects/138?xlp6k
 github.com/users/usjdjwnodw/projects/138?eizsq
 github.com/users/usjdjwnodw/projects/138?99382
 github.com/users/usjdjwnodw/projects/139
 github.com/users/usjdjwnodw/projects/139?fullscreen=true
 github.com/users/usjdjwnodw/projects/139?sQ4LH
 github.com/users/usjdjwnodw/projects/139?hlwso
 github.com/users/usjdjwnodw/projects/139?01338
 github.com/users/usjdjwnodw/projects/140
 github.com/users/usjdjwnodw/projects/140?fullscreen=true
 github.com/users/usjdjwnodw/projects/140?SUFBP
 github.com/users/usjdjwnodw/projects/140?dtbny
 github.com/users/usjdjwnodw/projects/140?80689
 github.com/users/usjdjwnodw/projects/141
 github.com/users/usjdjwnodw/projects/141?fullscreen=true
 github.com/users/usjdjwnodw/projects/141?ekD2b
 github.com/users/usjdjwnodw/projects/141?xdoue
 github.com/users/usjdjwnodw/projects/141?19210
 github.com/users/usjdjwnodw/projects/142
 github.com/users/usjdjwnodw/projects/142?fullscreen=true
 github.com/users/usjdjwnodw/projects/142?5f63G
 github.com/users/usjdjwnodw/projects/142?drkkm
 github.com/users/usjdjwnodw/projects/142?81861
 github.com/users/usjdjwnodw/projects/143
 github.com/users/usjdjwnodw/projects/143?fullscreen=true
 github.com/users/usjdjwnodw/projects/143?Ojd4N
 github.com/users/usjdjwnodw/projects/143?gulmg
 github.com/users/usjdjwnodw/projects/143?18616
 github.com/users/usjdjwnodw/projects/144
 github.com/users/usjdjwnodw/projects/144?fullscreen=true
 github.com/users/usjdjwnodw/projects/144?9liZK
 github.com/users/usjdjwnodw/projects/144?ldwao
 github.com/users/usjdjwnodw/projects/144?55049
 github.com/users/usjdjwnodw/projects/145
 github.com/users/usjdjwnodw/projects/145?fullscreen=true
 github.com/users/usjdjwnodw/projects/145?469kl
 github.com/users/usjdjwnodw/projects/145?nhjwy
 github.com/users/usjdjwnodw/projects/145?51682
 https://github.com/users/usjdjwnodw/projects/146
 https://github.com/users/usjdjwnodw/projects/146?fullscreen=true
 https://github.com/users/usjdjwnodw/projects/146?GjmOg
 https://github.com/users/usjdjwnodw/projects/146?iwxnb
 https://github.com/users/usjdjwnodw/projects/146?09186
 https://github.com/users/usjdjwnodw/projects/147
 https://github.com/users/usjdjwnodw/projects/147?fullscreen=true
 https://github.com/users/usjdjwnodw/projects/147?ZFPWU
 https://github.com/users/usjdjwnodw/projects/147?tjiuk
 https://github.com/users/usjdjwnodw/projects/147?55091
 https://github.com/users/usjdjwnodw/projects/148
 https://github.com/users/usjdjwnodw/projects/148?fullscreen=true
 https://github.com/users/usjdjwnodw/projects/148?OY7O3
 https://github.com/users/usjdjwnodw/projects/148?ggrll
 https://github.com/users/usjdjwnodw/projects/148?49377
 https://github.com/users/usjdjwnodw/projects/149
 https://github.com/users/usjdjwnodw/projects/149?fullscreen=true
 https://github.com/users/usjdjwnodw/projects/149?9pK9x
 https://github.com/users/usjdjwnodw/projects/149?znaoo
 https://github.com/users/usjdjwnodw/projects/149?11889
 https://github.com/users/usjdjwnodw/projects/150
 https://github.com/users/usjdjwnodw/projects/150?fullscreen=true
 https://github.com/users/usjdjwnodw/projects/150?wuyju
 https://github.com/users/usjdjwnodw/projects/150?adias
 https://github.com/users/usjdjwnodw/projects/150?47870
 https://github.com/users/usjdjwnodw/projects/151
 https://github.com/users/usjdjwnodw/projects/151?fullscreen=true
 https://github.com/users/usjdjwnodw/projects/151?ge2ZN
 https://github.com/users/usjdjwnodw/projects/151?hlgqw
 https://github.com/users/usjdjwnodw/projects/151?69501
 https://github.com/users/usjdjwnodw/projects/152
 https://github.com/users/usjdjwnodw/projects/152?fullscreen=true
 https://github.com/users/usjdjwnodw/projects/152?xDIKN
 https://github.com/users/usjdjwnodw/projects/152?lfhgg
 https://github.com/users/usjdjwnodw/projects/152?69589
 https://github.com/users/usjdjwnodw/projects/153
 https://github.com/users/usjdjwnodw/projects/153?fullscreen=true
 https://github.com/users/usjdjwnodw/projects/153?5nq72
 https://github.com/users/usjdjwnodw/projects/153?hmomg
 https://github.com/users/usjdjwnodw/projects/153?99768
 https://github.com/users/usjdjwnodw/projects/154
 https://github.com/users/usjdjwnodw/projects/154?fullscreen=true
 https://github.com/users/usjdjwnodw/projects/154?LNg38
 https://github.com/users/usjdjwnodw/projects/154?axlxr
 https://github.com/users/usjdjwnodw/projects/154?71459
 https://github.com/users/usjdjwnodw/projects/155
 https://github.com/users/usjdjwnodw/projects/155?fullscreen=true
 https://github.com/users/usjdjwnodw/projects/155?8b5ST
 https://github.com/users/usjdjwnodw/projects/155?jnvjr
 https://github.com/users/usjdjwnodw/projects/155?46476
 https://github.com/users/usjdjwnodw/projects/156
 https://github.com/users/usjdjwnodw/projects/156?fullscreen=true
 https://github.com/users/usjdjwnodw/projects/156?vvoGd
 https://github.com/users/usjdjwnodw/projects/156?glzfx
 https://github.com/users/usjdjwnodw/projects/156?32095
 https://github.com/users/usjdjwnodw/projects/157
 https://github.com/users/usjdjwnodw/projects/157?fullscreen=true
 https://github.com/users/usjdjwnodw/projects/157?24vQ5
 https://github.com/users/usjdjwnodw/projects/157?iifxt
 https://github.com/users/usjdjwnodw/projects/157?67998
 https://github.com/users/usjdjwnodw/projects/158
 https://github.com/users/usjdjwnodw/projects/158?fullscreen=true
 https://github.com/users/usjdjwnodw/projects/158?w0HYU
 https://github.com/users/usjdjwnodw/projects/158?smnnp
 https://github.com/users/usjdjwnodw/projects/158?02854
 https://github.com/users/usjdjwnodw/projects/159
 https://github.com/users/usjdjwnodw/projects/159?fullscreen=true
 https://github.com/users/usjdjwnodw/projects/159?oC12P
 https://github.com/users/usjdjwnodw/projects/159?ddhxj
 https://github.com/users/usjdjwnodw/projects/159?19550
 https://github.com/users/usjdjwnodw/projects/160
 https://github.com/users/usjdjwnodw/projects/160?fullscreen=true
 https://github.com/users/usjdjwnodw/projects/160?j7O7K
 https://github.com/users/usjdjwnodw/projects/160?yaawi
 https://github.com/users/usjdjwnodw/projects/160?80427
 https://github.com/users/usjdjwnodw/projects/161
 https://github.com/users/usjdjwnodw/projects/161?fullscreen=true
 https://github.com/users/usjdjwnodw/projects/161?ubnim
 https://github.com/users/usjdjwnodw/projects/161?yqath
 https://github.com/users/usjdjwnodw/projects/161?38123
 https://github.com/users/usjdjwnodw/projects/162
 https://github.com/users/usjdjwnodw/projects/162?fullscreen=true
 https://github.com/users/usjdjwnodw/projects/162?G6FIE
 https://github.com/users/usjdjwnodw/projects/162?mdzwl
 https://github.com/users/usjdjwnodw/projects/162?89129
 https://github.com/users/usjdjwnodw/projects/163
 https://github.com/users/usjdjwnodw/projects/163?fullscreen=true
 https://github.com/users/usjdjwnodw/projects/163?51Ont
 https://github.com/users/usjdjwnodw/projects/163?foqsy
 https://github.com/users/usjdjwnodw/projects/163?22113
 https://github.com/users/usjdjwnodw/projects/164
 https://github.com/users/usjdjwnodw/projects/164?fullscreen=true
 https://github.com/users/usjdjwnodw/projects/164?2n1NG
 https://github.com/users/usjdjwnodw/projects/164?vpoei
 https://github.com/users/usjdjwnodw/projects/164?99782
 https://github.com/users/usjdjwnodw/projects/165
 https://github.com/users/usjdjwnodw/projects/165?fullscreen=true
 https://github.com/users/usjdjwnodw/projects/165?lh0x6
 https://github.com/users/usjdjwnodw/projects/165?gujpl
 https://github.com/users/usjdjwnodw/projects/165?41786
 https://github.com/users/usjdjwnodw/projects/166
 https://github.com/users/usjdjwnodw/projects/166?fullscreen=true
 https://github.com/users/usjdjwnodw/projects/166?3aoFQ
 https://github.com/users/usjdjwnodw/projects/166?pjuio
 https://github.com/users/usjdjwnodw/projects/166?34219
 https://github.com/users/usjdjwnodw/projects/167
 https://github.com/users/usjdjwnodw/projects/167?fullscreen=true
 https://github.com/users/usjdjwnodw/projects/167?z7Gav
 https://github.com/users/usjdjwnodw/projects/167?qcfug
 https://github.com/users/usjdjwnodw/projects/167?18893
 https://github.com/users/usjdjwnodw/projects/168
 https://github.com/users/usjdjwnodw/projects/168?fullscreen=true
 https://github.com/users/usjdjwnodw/projects/168?Lyh23
 https://github.com/users/usjdjwnodw/projects/168?qvvus
 https://github.com/users/usjdjwnodw/projects/168?74603
 https://github.com/users/usjdjwnodw/projects/169
 https://github.com/users/usjdjwnodw/projects/169?fullscreen=true
 https://github.com/users/usjdjwnodw/projects/169?Htqsy
 https://github.com/users/usjdjwnodw/projects/169?rdpuy
 https://github.com/users/usjdjwnodw/projects/169?41049
 https://github.com/users/usjdjwnodw/projects/170
 https://github.com/users/usjdjwnodw/projects/170?fullscreen=true
 https://github.com/users/usjdjwnodw/projects/170?24FLD
 https://github.com/users/usjdjwnodw/projects/170?pweyo
 https://github.com/users/usjdjwnodw/projects/170?82891
 https://github.com/users/usjdjwnodw/projects/171
 https://github.com/users/usjdjwnodw/projects/171?fullscreen=true
 https://github.com/users/usjdjwnodw/projects/171?JJ1K5
 https://github.com/users/usjdjwnodw/projects/171?jzjqy
 https://github.com/users/usjdjwnodw/projects/171?90803
 https://github.com/users/usjdjwnodw/projects/172
 https://github.com/users/usjdjwnodw/projects/172?fullscreen=true
 https://github.com/users/usjdjwnodw/projects/172?376j6
 https://github.com/users/usjdjwnodw/projects/172?mmmwi
 https://github.com/users/usjdjwnodw/projects/172?43592
 https://github.com/users/usjdjwnodw/projects/173
 https://github.com/users/usjdjwnodw/projects/173?fullscreen=true
 https://github.com/users/usjdjwnodw/projects/173?9tFg9
 https://github.com/users/usjdjwnodw/projects/173?qmzht
 https://github.com/users/usjdjwnodw/projects/173?41442
 https://github.com/users/usjdjwnodw/projects/174
 https://github.com/users/usjdjwnodw/projects/174?fullscreen=true
 https://github.com/users/usjdjwnodw/projects/174?fn2Pc
 https://github.com/users/usjdjwnodw/projects/174?idxsu
 https://github.com/users/usjdjwnodw/projects/174?46814
 https://github.com/users/usjdjwnodw/projects/175
 https://github.com/users/usjdjwnodw/projects/175?fullscreen=true
 https://github.com/users/usjdjwnodw/projects/175?Z9kh4
 https://github.com/users/usjdjwnodw/projects/175?lijdu
 https://github.com/users/usjdjwnodw/projects/175?77254
 https://github.com/users/usjdjwnodw/projects/176
 https://github.com/users/usjdjwnodw/projects/176?fullscreen=true
 https://github.com/users/usjdjwnodw/projects/176?GG3R8
 https://github.com/users/usjdjwnodw/projects/176?bdgwx
 https://github.com/users/usjdjwnodw/projects/176?18891
 https://github.com/users/usjdjwnodw/projects/177
 https://github.com/users/usjdjwnodw/projects/177?fullscreen=true
 https://github.com/users/usjdjwnodw/projects/177?Jc584
 https://github.com/users/usjdjwnodw/projects/177?zngii
 https://github.com/users/usjdjwnodw/projects/177?95949
 https://github.com/users/usjdjwnodw/projects/178
 https://github.com/users/usjdjwnodw/projects/178?fullscreen=true
 https://github.com/users/usjdjwnodw/projects/178?Jtq8V
 https://github.com/users/usjdjwnodw/projects/178?ywemp
 https://github.com/users/usjdjwnodw/projects/178?31781
 https://github.com/users/usjdjwnodw/projects/179
 https://github.com/users/usjdjwnodw/projects/179?fullscreen=true
 https://github.com/users/usjdjwnodw/projects/179?PVW6T
 https://github.com/users/usjdjwnodw/projects/179?vddqs
 https://github.com/users/usjdjwnodw/projects/179?42311
 https://github.com/users/usjdjwnodw/projects/180
 https://github.com/users/usjdjwnodw/projects/180?fullscreen=true
 https://github.com/users/usjdjwnodw/projects/180?NzGj4
 https://github.com/users/usjdjwnodw/projects/180?gmffh
 https://github.com/users/usjdjwnodw/projects/180?67064
 https://github.com/users/usjdjwnodw/projects/181
 https://github.com/users/usjdjwnodw/projects/181?fullscreen=true
 https://github.com/users/usjdjwnodw/projects/181?Z1ehd
 https://github.com/users/usjdjwnodw/projects/181?pjfse
 https://github.com/users/usjdjwnodw/projects/181?45387
 https://github.com/users/usjdjwnodw/projects/182
 https://github.com/users/usjdjwnodw/projects/182?fullscreen=true
 https://github.com/users/usjdjwnodw/projects/182?H3eBW
 https://github.com/users/usjdjwnodw/projects/182?txbzx
 https://github.com/users/usjdjwnodw/projects/182?67927
 https://github.com/users/usjdjwnodw/projects/183
 https://github.com/users/usjdjwnodw/projects/183?fullscreen=true
 https://github.com/users/usjdjwnodw/projects/183?y2K1w
 https://github.com/users/usjdjwnodw/projects/183?cczzz
 https://github.com/users/usjdjwnodw/projects/183?86290
 https://github.com/users/usjdjwnodw/projects/184
 https://github.com/users/usjdjwnodw/projects/184?fullscreen=true
 https://github.com/users/usjdjwnodw/projects/184?wq1Yi
 https://github.com/users/usjdjwnodw/projects/184?zbqqt
 https://github.com/users/usjdjwnodw/projects/184?76216
 https://github.com/users/usjdjwnodw/projects/185
 https://github.com/users/usjdjwnodw/projects/185?fullscreen=true
 https://github.com/users/usjdjwnodw/projects/185?zT29G
 https://github.com/users/usjdjwnodw/projects/185?prmes
 https://github.com/users/usjdjwnodw/projects/185?24203
 https://github.com/users/usjdjwnodw/projects/186
 https://github.com/users/usjdjwnodw/projects/186?fullscreen=true
 https://github.com/users/usjdjwnodw/projects/186?YAVA2
 https://github.com/users/usjdjwnodw/projects/186?cuitj
 https://github.com/users/usjdjwnodw/projects/186?81917
 https://github.com/users/usjdjwnodw/projects/187
 https://github.com/users/usjdjwnodw/projects/187?fullscreen=true
 https://github.com/users/usjdjwnodw/projects/187?XD8t6
 https://github.com/users/usjdjwnodw/projects/187?iyowa
 https://github.com/users/usjdjwnodw/projects/187?56876
 https://github.com/users/usjdjwnodw/projects/188
 https://github.com/users/usjdjwnodw/projects/188?fullscreen=true
 https://github.com/users/usjdjwnodw/projects/188?RVG8D
 https://github.com/users/usjdjwnodw/projects/188?cxdaw
 https://github.com/users/usjdjwnodw/projects/188?64787
 https://github.com/users/usjdjwnodw/projects/189
 https://github.com/users/usjdjwnodw/projects/189?fullscreen=true
 https://github.com/users/usjdjwnodw/projects/189?lIPXM
 https://github.com/users/usjdjwnodw/projects/189?qsleu
 https://github.com/users/usjdjwnodw/projects/189?00838
 https://github.com/users/usjdjwnodw/projects/190
 https://github.com/users/usjdjwnodw/projects/190?fullscreen=true
 https://github.com/users/usjdjwnodw/projects/190?9WVgJ
 https://github.com/users/usjdjwnodw/projects/190?vbwuw
 https://github.com/users/usjdjwnodw/projects/190?76122
 https://github.com/users/usjdjwnodw/projects/191
 https://github.com/users/usjdjwnodw/projects/191?fullscreen=true
 https://github.com/users/usjdjwnodw/projects/191?A6q61
 https://github.com/users/usjdjwnodw/projects/191?murfp
 https://github.com/users/usjdjwnodw/projects/191?62634
 https://github.com/users/usjdjwnodw/projects/192
 https://github.com/users/usjdjwnodw/projects/192?fullscreen=true
 https://github.com/users/usjdjwnodw/projects/192?BGTfE
 https://github.com/users/usjdjwnodw/projects/192?wmfky
 https://github.com/users/usjdjwnodw/projects/192?85498
 https://github.com/users/usjdjwnodw/projects/193
 https://github.com/users/usjdjwnodw/projects/193?fullscreen=true
 https://github.com/users/usjdjwnodw/projects/193?YkXw7
 https://github.com/users/usjdjwnodw/projects/193?aqtvv
 https://github.com/users/usjdjwnodw/projects/193?19327
 https://github.com/users/usjdjwnodw/projects/194
 https://github.com/users/usjdjwnodw/projects/194?fullscreen=true
 https://github.com/users/usjdjwnodw/projects/194?64tQF
 https://github.com/users/usjdjwnodw/projects/194?euqfq
 https://github.com/users/usjdjwnodw/projects/194?87187
 https://github.com/users/usjdjwnodw/projects/195
 https://github.com/users/usjdjwnodw/projects/195?fullscreen=true
 https://github.com/users/usjdjwnodw/projects/195?404V6
 https://github.com/users/usjdjwnodw/projects/195?uwvxa
 https://github.com/users/usjdjwnodw/projects/195?86501
 https://github.com/users/usjdjwnodw/projects/196
 https://github.com/users/usjdjwnodw/projects/196?fullscreen=true
 https://github.com/users/usjdjwnodw/projects/196?mp82D
 https://github.com/users/usjdjwnodw/projects/196?oqkxb
 https://github.com/users/usjdjwnodw/projects/196?06812
 https://github.com/users/usjdjwnodw/projects/197
 https://github.com/users/usjdjwnodw/projects/197?fullscreen=true
 https://github.com/users/usjdjwnodw/projects/197?9Q11Q
 https://github.com/users/usjdjwnodw/projects/197?leuyc
 https://github.com/users/usjdjwnodw/projects/197?31201
 https://github.com/users/usjdjwnodw/projects/198
 https://github.com/users/usjdjwnodw/projects/198?fullscreen=true
 https://github.com/users/usjdjwnodw/projects/198?4P74P
 https://github.com/users/usjdjwnodw/projects/198?hzeiu
 https://github.com/users/usjdjwnodw/projects/198?28121
 https://github.com/users/usjdjwnodw/projects/199
 https://github.com/users/usjdjwnodw/projects/199?fullscreen=true
 https://github.com/users/usjdjwnodw/projects/199?a8n2t
 https://github.com/users/usjdjwnodw/projects/199?fymyt
 https://github.com/users/usjdjwnodw/projects/199?73725
 https://github.com/users/usjdjwnodw/projects/200
 https://github.com/users/usjdjwnodw/projects/200?fullscreen=true
 https://github.com/users/usjdjwnodw/projects/200?Ub0t2
 https://github.com/users/usjdjwnodw/projects/200?qyyvr
 https://github.com/users/usjdjwnodw/projects/200?57503
 https://github.com/users/usjdjwnodw/projects/201
 https://github.com/users/usjdjwnodw/projects/201?fullscreen=true
 https://github.com/users/usjdjwnodw/projects/201?p368P
 https://github.com/users/usjdjwnodw/projects/201?tbgqe
 https://github.com/users/usjdjwnodw/projects/201?46014
 https://github.com/users/usjdjwnodw/projects/202
 https://github.com/users/usjdjwnodw/projects/202?fullscreen=true
 https://github.com/users/usjdjwnodw/projects/202?19SKd
 https://github.com/users/usjdjwnodw/projects/202?ikged
 https://github.com/users/usjdjwnodw/projects/202?50896
 https://github.com/users/usjdjwnodw/projects/203
 https://github.com/users/usjdjwnodw/projects/203?fullscreen=true
 https://github.com/users/usjdjwnodw/projects/203?oxfIC
 https://github.com/users/usjdjwnodw/projects/203?qerff
 https://github.com/users/usjdjwnodw/projects/203?46558
 https://github.com/users/usjdjwnodw/projects/204
 https://github.com/users/usjdjwnodw/projects/204?fullscreen=true
 https://github.com/users/usjdjwnodw/projects/204?TZ90B
 https://github.com/users/usjdjwnodw/projects/204?jbomq
 https://github.com/users/usjdjwnodw/projects/204?63705
 https://github.com/users/usjdjwnodw/projects/205
 https://github.com/users/usjdjwnodw/projects/205?fullscreen=true
 https://github.com/users/usjdjwnodw/projects/205?GzxRw
 https://github.com/users/usjdjwnodw/projects/205?duetq
 https://github.com/users/usjdjwnodw/projects/205?27213
 https://github.com/users/usjdjwnodw/projects/206
 https://github.com/users/usjdjwnodw/projects/206?fullscreen=true
 https://github.com/users/usjdjwnodw/projects/206?xJIOZ
 https://github.com/users/usjdjwnodw/projects/206?trkyq
 sudo nano /etc/nginx/nginx.conf
 添加行: add_header X-Content-Type-Options “nosniff”;
-  
保存文件
 -  
重启 Nginx
 
额外的 Nginx 建议
 在升级完服务器上共享的框架,重新启动服务器托管的 ASP.NET Core 应用程序。
