AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题

问题[http2](server)

Martin Hope
Moritz
Asked: 2021-10-05 01:39:56 +0800 CST

(Dis-) 使用 HTTP/2 或 HTTP/3 进行后端连接的优势(反向代理 -> 后端)?

  • 0

使用 HTTP/2 甚至 HTTP/3 进行反向代理和后端之间的连接有哪些优点和缺点?

我还没有真正遇到过这种情况,只看到 H2 和 H2 部署在反向代理和 CDN 前面。ASFIK H2 和 H3 通常(H2C 是一回事,对吗?)需要 TLS,如果您想远离后端进行 TLS 终止,这将使其不适合。

H2 也可能比基本的 HTTP/1.1 后端更难设置和配置。从好的方面来说,多路复用不是对通过 n 个 TCP 连接获得的固定并发请求数量的改进,反向代理将为 HTTP/1.1 后端连接打开吗?

在 CPU、内存和 IO 上的负载方面有哪些节省和成本?

有没有人有这方面的实际经验?

reverse-proxy architecture http2
  • 1 个回答
  • 282 Views
Martin Hope
hyjinx
Asked: 2021-09-10 04:26:53 +0800 CST

在 Debian 9.13 上的 apache2 v2.4.25 中启用了 HTTP/2 支持,但测试显示不支持 HTTP/2

  • 0

我正在尝试配置 HTTP/2 支持,但出了点问题

我的服务器是运行 Debian 9.13(拉伸)服务器版本 Apache/2.4.25 的谷歌计算引擎 vm,并使用 OpenSSL 配置了 SSL 证书。当我运行openssl version它报告版本 1.1.1g。运行 phpinfo();时会报告 OpenSSL/1.0.2u. PHP 版本 7.4.11 并且phpinfo();还报告...

SSL_VERSION_INTERFACE  ->  mod_ssl/2.4.25
SSL_VERSION_LIBRARY  ->  OpenSSL/1.0.2u
SSL_PROTOCOL  ->  TLSv1.2

我按照此处的说明“在 Apache 中启用 HTTP/2 模块”和“在您的 Apache 虚拟主机中启用 HTTP/2”以及此处。这样做之后,当我运行命令时 apache2ctl -M | grep http2 ,它会返回http2_module (shared)启用 HTTP/2 支持的信号。但它不在生产中。

这是我的 apache2 虚拟主机配置文件中使用的行 /etc/apache2/sites-available/default-ssl.conf

<VirtualHost _default_:443>
    Protocols h2 h2c http/1.1
    ...

curl -vso http2_debug.log --http2 https://pharealty.com/这是使用成功下载页面的命令时的详细连接信息。

*   Trying 35.236.101.224...
* TCP_NODELAY set
* Connected to pharealty.com (35.236.101.224) port 443 (#0)
* ALPN, offering h2
* ALPN, offering http/1.1
* Cipher selection: ALL:!EXPORT:!EXPORT40:!EXPORT56:!aNULL:!LOW:!RC4:@STRENGTH
* successfully set certificate verify locations:
*   CAfile: /etc/ssl/certs/ca-certificates.crt
  CApath: /etc/ssl/certs
* TLSv1.2 (OUT), TLS header, Certificate Status (22):
} [5 bytes data]
* TLSv1.2 (OUT), TLS handshake, Client hello (1):
} [512 bytes data]
* TLSv1.2 (IN), TLS handshake, Server hello (2):
{ [109 bytes data]
* TLSv1.2 (IN), TLS handshake, Certificate (11):
{ [4036 bytes data]
* TLSv1.2 (IN), TLS handshake, Server key exchange (12):
{ [333 bytes data]
* TLSv1.2 (IN), TLS handshake, Server finished (14):
{ [4 bytes data]
* TLSv1.2 (OUT), TLS handshake, Client key exchange (16):
} [70 bytes data]
* TLSv1.2 (OUT), TLS change cipher, Client hello (1):
} [1 bytes data]
* TLSv1.2 (OUT), TLS handshake, Finished (20):
} [16 bytes data]
* TLSv1.2 (IN), TLS change cipher, Client hello (1):
{ [1 bytes data]
* TLSv1.2 (IN), TLS handshake, Finished (20):
{ [16 bytes data]
* SSL connection using TLSv1.2 / ECDHE-RSA-AES256-GCM-SHA384
* ALPN, server accepted to use http/1.1
* Server certificate:
*  subject: CN=pharealty.com
*  start date: Jul 10 01:53:04 2021 GMT
*  expire date: Oct  8 01:53:03 2021 GMT
*  subjectAltName: host "pharealty.com" matched cert's "pharealty.com"
*  issuer: C=US; O=Let's Encrypt; CN=R3
*  SSL certificate verify ok.
} [5 bytes data]
> GET / HTTP/1.1
> Host: pharealty.com
> User-Agent: curl/7.52.1
> Accept: */*
>
{ [5 bytes data]
< HTTP/1.1 200 OK
< Date: Wed, 08 Sep 2021 17:20:21 GMT
< Server: Apache
< Upgrade: h2,h2c
< Connection: Upgrade
< Set-Cookie: PHPSESSID=1mv9jqka4n7c7fb6qmtavfsgue; path=/
< Expires: Thu, 19 Nov 1981 08:52:00 GMT
< Cache-Control: no-store, no-cache, must-revalidate
< Pragma: no-cache
< X-Pingback: https://pharealty.com/xmlrpc.php
< Link: <https://pharealty.com/wp-json/>; rel="https://api.w.org/"
< Link: <https://pharealty.com/wp-json/wp/v2/pages/48>; rel="alternate"; type="application/json"
< Link: <https://pharealty.com/>; rel=shortlink
< Set-Cookie: phaLandingPage=%2F; expires=Tue, 08-Mar-2022 17:20:21 GMT; Max-Age=15638400; path=/
< Vary: Accept-Encoding
< Transfer-Encoding: chunked
< Content-Type: text/html; charset=UTF-8
<
{ [7 bytes data]
* Curl_http_done: called premature == 0
* Connection #0 to host pharealty.com left intact

看起来它一开始工作得很好,然后又恢复到 HTTP/1.1

据我所知,我有足够新的 OpenSSL 版本。尽管我之前提到的这个页面强烈推荐了高于 2.4.25 的 apache 版本,但我无法将 apache 更新到 2.4.25 以外的任何版本。

切换后是否需要设置新的 SSL 证书?是 apache 的版本导致问题的原因吗?

我已经在几个 http/2 测试网站上测试了该网站,但每次都失败。

debian apache2 http2
  • 1 个回答
  • 340 Views
Martin Hope
Juan C. Roldán
Asked: 2021-07-09 03:06:11 +0800 CST

Apache 与 HTTP/2 和 per-directory upload_max_filesize

  • 2

我刚刚在 Debian 9.13 Stretch 上升级了我的 apache2 服务器以开始使用 HTTP/2。就我而言,这需要从 mod_php 切换到 PHP-FPM。

问题是 PHP-FPM 不遵守 .htaccess 中的某些 apache 指令。例如,我一直php_value upload_max_filesize 900M在上传目录中的 .htaccess 文件中使用,以增加文件大小和其他相关参数,例如max_execution_time,post_max_size比使用全局 php.ini 文件更精细。

这些是我已经尝试过的一些替代方案:

  1. 使用 PHPini_set()方法:post_max_size并upload_max_filesize在我的脚本启动之前使用。
  2. 使用 .user.ini 覆盖文件:不太理想,因为它需要在允许上传内容的每个地方限制 .ini 文件的上传(我可以使用<Files>过滤器禁用读取访问,但不能上传)。
  3. 将 .user.ini 文件重命名SOME_SCRAMBLED_TEST.ini并添加 Require all denied 到此类文件:危险,因为在错误位置的单个 phpscandir可能会泄露我的安全配置。
  4. 在 php.ini 脚本中更改它:将其作为最后一个选项;我更喜欢有一个相当大的上传大小,而不是允许用户上传一个搞砸我的服务器的 .user.ini 文件。

是否有任何其他替代方法可以使用 HTTP/2 并拥有允许上传的安全服务器?

.htaccess php.ini apache2 http2
  • 1 个回答
  • 359 Views
Martin Hope
user101289
Asked: 2021-06-03 12:01:35 +0800 CST

Windows 更新导致 IIS Express 失败并出现 ERR_HTTP2_PROTOCOL_ERROR

  • 0

过去一年我一直在 Windows 机器上构建 reactjs 应用程序,运行 Visual Studio IIS 测试服务器进行调试/测试。

我刚刚安装了一个windows 更新包,重新启动,我的本地 VS IIS Express 服务器无法再为我的站点提供服务——报告的唯一错误是:

localhost/:19 GET https://localhost:44332/static/js/main.chunk.js net::ERR_HTTP2_PROTOCOL_ERROR 200
localhost/:19 GET https://localhost:44332/static/js/vendors~main.chunk.js net::ERR_HTTP2_PROTOCOL_ERROR 200

我不知道从哪里开始调试这个——这ERR_HTTP2_PROTOCOL_ERROR似乎有很多可能的原因。重新启动,清除我的浏览器缓存,使用隐身模式,使用其他浏览器似乎都有同样的问题。

windows iis windows-10 http2 iis-express
  • 1 个回答
  • 3290 Views
Martin Hope
ImBoredAllTheTime
Asked: 2021-04-14 10:41:47 +0800 CST

HTTP/2 的请求行是什么?

  • 2

对于 HTTP/0.9:

GET /

对于 HTTP/1.0:

GET / HTTP/1.0

对于 HTTP/1.1:

GET / HTTP/1.1
Host: example.com

HTTP/2 的请求行是什么?是不是像:

GET / HTTP/2.0

还是 HTTP/2?

http2 requestheader
  • 1 个回答
  • 2947 Views
Martin Hope
Leandros
Asked: 2021-01-21 04:13:11 +0800 CST

使用 nginx 的 http/1 和 http/2 并行传递

  • 0

是否可以在 nginx 中同时拥有http/1并http/2启用虚拟主机?

这个想法是通过提供服务来扩大支持的浏览器(http/2如果支持,如果不支持,则回退到http/1.

linux http nginx http2 spdy
  • 1 个回答
  • 378 Views
Martin Hope
user1413341
Asked: 2020-11-14 21:34:16 +0800 CST

Web 服务器 CPU 使用率随着 LAMP 堆栈缓慢增加?

  • 3

今年我对我的网站进行了大量更改,并注意到我的 CPU 使用率在几个月内逐渐增加(在大约 2 个月内从大约 0% 慢慢上升到 60%)。几周前重新启动我的服务器后,它又回到了 0%,现在又开始缓慢攀升。

我的所有其他统计数据(例如 RAM 和吞吐量)基本持平,只有 CPU 使用率在攀升。没有尖峰 - 只是逐渐爬升。RAM 保持在 8% 左右。

几个月前我实现了 HTTP2/push 和延迟加载图像,我怀疑其中 1 个实现可能会导致这种情况,但我不能 100% 确定。

有谁知道为什么会发生这种情况的任何常见原因?它可能是我的 PHP 代码中的东西吗?有没有办法可以诊断问题?

编辑:我要尝试的一件事是禁用 HTTP2/push,测试,然后对延迟加载图像执行相同的操作。但是,我仍然不知道这些是否会导致如此奇怪的问题。

编辑2:我认为这个问题可能与此相同:https ://stackoverflow.com/questions/64345022/google-osconfigs-cpu-usage-of-vm-on-google-cloud-platform-increases-steadily

编辑 3:我可能在这里找到了一些有用的信息(也许这是一个错误?) - https://github.com/GoogleCloudPlatform/osconfig/issues/228

lamp cpu-usage http2
  • 1 个回答
  • 273 Views
Martin Hope
CaptainCodeman
Asked: 2020-10-19 12:30:23 +0800 CST

网络服务器如何知道在 HTTP/2 请求中发送哪些文件?

  • 0

据我了解,HTTP/2 可以通过单个连接发送网站资产(图像、脚本、css 文件等),也可以推送它们。我感兴趣的是这在实践中是如何发生的。

通用服务器(例如 Apache 或 nginx)如何决定发送什么以及发送什么?特别是,我知道理论上服务器可以推送它知道将被请求的数据,但它怎么知道要发送什么?

例如,假设您有一个配置了 index.php 脚本的网络服务器(Apache 或 nginx),该脚本生成一个页面和许多资产。网络服务器是否会自动解析 index.php 的输出并将所有必需的文件连同响应一起发送?或者 index.php 文件是否需要以某种方式指定?

还是这样的情况,虽然理论上可能,但在实践中不会发生,浏览器只是稍后才请求资产?

php web-server http2
  • 1 个回答
  • 327 Views
Martin Hope
user64675
Asked: 2020-03-23 19:37:10 +0800 CST

如何在第一页加载(SSL + Pagespeed)上解决静态文件的 ERR_HTTP2_PROTOCOL_ERROR?

  • 0

我有一个 nginx HTTP2 + ngx_pagespeed + brotli + Wordpress W3 Total Cache 设置。在第一页加载一些由 Pagespeed 修改的静态文件无法加载,给出 ERR_HTTP2_PROTOCOL_ERROR。

最初我认为这是 W3 Total Cache 错误,在重新加载缓存页面后一切似乎都加载正常。是 Pagespeed 搞砸了还是我的 SSL 设置有误?

我的网站配置:

server {
    listen 443 ssl http2;
    listen [::]:443 ssl http2;

    server_name mywebsite.com www.mywebsite.com;

    root /srv/mywebsite.com/www/;
    index index.php index.html index.htm;
    error_log /srv/mywebsite.com/log/error.log;

    keepalive_timeout 60;

    ssl_session_cache shared:SSL:10m;
    ssl_session_timeout 10m;
    ssl_certificate /etc/letsencrypt/live/mywebsite.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/mywebsite.com/privkey.pem;
    ssl_dhparam /etc/nginx/ssl/dhparam.pem;
    ssl_ciphers EECDH+AESGCM:EDH+AESGCM;
    ssl_ecdh_curve secp384r1;
    ssl_protocols TLSv1.2 TLSv1.3;
    ssl_stapling on;
    ssl_stapling_verify on;

    ssl_trusted_certificate /etc/letsencrypt/live/mywebsite.com/chain.pem;
    resolver 8.8.8.8 8.8.4.4 valid=300s;
    resolver_timeout 5s;
    ssl_session_tickets off;
    ssl_prefer_server_ciphers on;
    ssl_buffer_size 4k;

    add_header Strict-Transport-Security "max-age=63072000; includeSubDomains; preload";
    add_header X-Frame-Options SAMEORIGIN;
    add_header X-Content-Type-Options nosniff;
    add_header X-XSS-Protection "1; mode=block";

    pagespeed on;
    pagespeed Domain http://mywebsite.com;
    pagespeed Domain https://mywebsite.com;
    pagespeed MapOriginDomain localhost https://mywebsite.com;
    pagespeed LoadFromFile https://mywebsite.com /srv/mywebsite.com/www/;
    pagespeed FileCachePath /var/cache/pagespeed;
    pagespeed EnableFilters prioritize_critical_css,extend_cache,rewrite_javascript,rewrite_css,convert_jpeg_to_progressive,convert_jpeg_to_webp,convert_png_to_jpeg,convert_to_webp_lossless,recompress_jpeg,recompress_png,recompress_webp,jpeg_subsampling,resize_images,strip_image_color_profile,strip_image_meta_data,inline_images;
    pagespeed PreserveUrlRelativity on;
    pagespeed XHeaderValue "Powered By ngx_pagespeed";
    pagespeed ImplicitCacheTtlMs 2592000000;
    pagespeed LoadFromFileCacheTtlMs 2592000000;

    # BEGIN W3TC Page Cache core
    set $w3tc_rewrite 1;
    if ($request_method = POST) {
        set $w3tc_rewrite 0;
    }
    if ($query_string != "") {
        set $w3tc_rewrite 0;
    }
    if ($request_uri !~ \/$) {
        set $w3tc_rewrite 0;
    }
    if ($http_cookie ~* "(comment_author|wp\-postpass|w3tc_logged_out|wordpress_logged_in|wptouch_switch_toggle)") {
        set $w3tc_rewrite 0;
    }
    set $w3tc_preview "";
    if ($http_cookie ~* "(w3tc_preview)") {
        set $w3tc_preview _preview;
    }
    set $w3tc_ssl "";
    if ($scheme = https) {
        set $w3tc_ssl _ssl;
    }
    if ($http_x_forwarded_proto = 'https') {
        set $w3tc_ssl _ssl;
    }
    set $w3tc_enc "";
    #if ($http_accept_encoding ~ gzip) {
    #    set $w3tc_enc _gzip;
    #}
    set $w3tc_ext "";
    if (-f "$document_root/wp-content/cache/page_enhanced/$http_host/$request_uri/_index$w3tc_ssl$w3tc_preview.html$w3tc_enc") {
      set $w3tc_ext .html;
    }
    if (-f "$document_root/wp-content/cache/page_enhanced/$http_host/$request_uri/_index$w3tc_ssl$w3tc_preview.xml$w3tc_enc") {
        set $w3tc_ext .xml;
    }
    if ($w3tc_ext = "") {
        set $w3tc_rewrite 0;
    }
    if ($w3tc_rewrite = 1) {
        rewrite .* "/wp-content/cache/page_enhanced/$http_host/$request_uri/_index$w3tc_ssl$w3tc_preview$w3tc_ext$w3tc_enc" last;
    }
    # END W3TC Page Cache core

    # BEGIN W3TC Page Cache cache
    location ~ /wp-content/cache/page_enhanced.*html$ {
        expires modified 3600s;
        add_header Vary "Accept-Encoding, Cookie";
        add_header Pragma "public";
        add_header Cache-Control "public";
    }
    location ~ /wp-content/cache/page_enhanced.*gzip$ {
        brotli off;
        gzip off;
        types {
            text/xml xml_gzip;
        }
        default_type text/html;
        expires modified 3600s;
        add_header Vary "Accept-Encoding, Cookie";
        add_header Pragma "public";
        add_header Cache-Control "public";
        add_header Content-Encoding gzip;
    }
    # END W3TC Page Cache cache

    location ~ "\.pagespeed\.([a-z]\.)?[a-z]{2}\.[^.]{10}\.[^.]+" {
      add_header "" "";
    }
    location ~ "^/pagespeed_static/" { }
    location ~ "^/ngx_pagespeed_beacon$" { }

    # BEGIN W3TC Browser Cache
    pagespeed HttpCacheCompressionLevel 0;
    gzip on;
    gzip_vary on;
    gzip_types text/css text/x-component application/x-javascript application/javascript text/javascript text/x-js text/richtext text/plain text/xsd text/xsl text/xml image/bmp application/java application/msword application/vnd.ms-fontobject application/x-msdownload image/x-icon image/webp application/json application/vnd.ms-access video/webm application/vnd.ms-project application/x-font-otf application/vnd.ms-opentype application/vnd.oasis.opendocument.database application/vnd.oasis.opendocument.chart application/vnd.oasis.opendocument.formula application/vnd.oasis.opendocument.graphics application/vnd.oasis.opendocument.spreadsheet application/vnd.oasis.opendocument.text audio/ogg application/pdf application/vnd.ms-powerpoint image/svg+xml application/x-shockwave-flash image/tiff application/x-font-ttf audio/wav application/vnd.ms-write application/font-woff application/font-woff2 application/vnd.ms-excel;
    location ~ \.(css|htc|less|js|js2|js3|js4)$ {
        expires 31536000s;
        etag off;
        if_modified_since exact;
        add_header Pragma "public";
        add_header Cache-Control "public";
        try_files $uri $uri/ $uri.html /index.php?$args;
    }
    location ~ \.(html|htm|rtf|rtx|txt|xsd|xsl|xml)$ {
        expires 3600s;
        etag off;
        if_modified_since exact;
        add_header Pragma "public";
        add_header Cache-Control "public";
        try_files $uri $uri/ $uri.html /index.php?$args;
    }
    location ~ \.(asf|asx|wax|wmv|wmx|avi|bmp|class|divx|doc|docx|eot|exe|rss|atom|gif|tgz|gz|rar|gzip|bz2|ico|jpg|jpeg|jpe|webp|json|mdb|mid|midi|mov|qt|mp3|m4a|mp4|m4v|mpeg|mpg|mpe|webm|mpp|otf|_otf|odb|odc|odf|odg|odp|ods|odt|ogg|ogv|pdf|png|pot|pps|ppt|pptx|ra|ram|svg|svgz|swf|tar|tif|tiff|ttf|ttc|_ttf|wav|wma|wri|woff|woff2|xla|xls|xlsx|xlt|xlw|zip)$ {
        expires 31536000s;
        etag off;
        if_modified_since exact;
        add_header Pragma "public";
        add_header Cache-Control "public";
        try_files $uri $uri/ $uri.html /index.php?$args;
    }
    add_header Referrer-Policy "";
    # END W3TC Browser Cache

    location / {
        try_files $uri $uri/ /index.php?$args;
    }
    location ~ \.php$ {
        try_files $uri =404;
        fastcgi_pass unix:/var/run/php-fpm/php-fpm.sock;
        fastcgi_index index.php;
        fastcgi_param DOCUMENT_ROOT /srv/mywebsite.com/www/;
        fastcgi_param SCRIPT_FILENAME /srv/mywebsite.com/www$fastcgi_script_name;
        fastcgi_param PATH_TRANSLATED /srv/mywebsite.com/www$fastcgi_script_name;
        include fastcgi_params;
        fastcgi_param QUERY_STRING $query_string;
        fastcgi_param REQUEST_METHOD $request_method;
        fastcgi_param CONTENT_TYPE $content_type;
        fastcgi_param CONTENT_LENGTH $content_length;
        fastcgi_param HTTPS on;
        fastcgi_intercept_errors on;
        fastcgi_ignore_client_abort off;
        fastcgi_connect_timeout 60;
        fastcgi_send_timeout 180;
        fastcgi_read_timeout 180;
        fastcgi_buffer_size 128k;
        fastcgi_buffers 8 256k;
        fastcgi_busy_buffers_size 256k;
        fastcgi_temp_file_write_size 256k;
    }
}
ssl nginx http2 mod-pagespeed
  • 1 个回答
  • 3344 Views
Martin Hope
Evgeniy
Asked: 2020-02-13 07:04:36 +0800 CST

设置 HTTP/2、apache 和 Nginx 作为反向代理时的长 TTFB / SSL 协商

  • 0

如标题所示,在将 HTTP/2、Apache 和 Nginx 设置为反向代理时,我意识到 SSL 协商导致的部分非常长的 TTFB 超过一秒。

什么可能是固定螺丝和最常见的原因?这里举个例子。

ps:找到了一个类似的问题,但是没有具体的推荐,哪里有解决问题的办法。

apache-2.2 ssl nginx http2
  • 1 个回答
  • 747 Views

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    新安装后 postgres 的默认超级用户用户名/密码是什么?

    • 5 个回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve