假设我将正在运行的 Debian 系统的内核更新为apt-get upgrade linux-image-amd64
更高的次要版本号(例如,5.10.10
to 5.10.11
)。我是否必须重新启动 Debian 服务器才能使更新生效?
manifestor's questions
我的一个客户电子邮件服务器有以下 DNS 条目:
_dmarc IN TXT "v=DMARC1; p=none; rua=mailto:[email protected]"
这是我管理的唯一电子邮件服务器,它有一个 DMARC DNS 条目——在其他情况下,SPF 和 DKIM 总是足以让电子邮件服务器正常工作。
烦人的是我每天都会收到来自 Gmail、Yahoo 等的多份 DMARC 报告,而我不需要它们。如何停止接收这些 DMARC 报告?
我应该只删除rua
DNS 条目的一部分吗?
在 AWS EC2 实例上安装并启用后,我每次在 Debian 上的文件中运行(从 cronjob 中)sysstat
都会得到以下日志条目:sysstat
/etc/cron.d/sysstat
/var/log/syslog
kernel: [95827.487657] ena: Feature 27 isn't supported
有谁知道这意味着什么?重要还是可以忽略?我该如何解决这个问题?
我创建了一个具有AmazonRDSReadOnlyAccess
权限的 IAM 用户(仅限 CLI)。现在,每次我尝试列出我的数据库实例时,我都会得到一个空的 JSON 对象,即使我有一个活动的 RDS 实例:
aws rds describe-db-instances
{
"DBInstances": []
}
我还尝试指定我的实例 ID(实例标识符确实存在):
aws rds describe-db-instances --db-instance-identifier mydb
An error occurred (DBInstanceNotFound) when calling the \
DescribeDBInstances operation: DBInstance vipbilet-db not found.
我在这里做错了什么?
我需要一个具有 4 个 CPU 和 2 个、最多 4 GB RAM 的 EC2 实例,这是 AWS 不提供的。所以我的问题是:是否可以根据您的要求使用 CPU 和 RAM 创建自己的自定义实例类型?
正如问题所暗示的那样,我想通过 CLI 为 S3 存储桶中的单个对象更改/设置一些 HTTP 标头。这是我到目前为止所尝试的:
aws s3 sync --delete --acl public-read --cache-control \
max-age=31536000 --expires "Mon, 01 Oct 2035 20:30:00 GMT" \
js/jquery-blockui/jquery.blockUI.min.js \
s3://mybucket/js/jquery-blockui/jquery.blockUI.min.js --dryrun
问题是,这aws s3 sync
告诉我他在我的文件系统上找不到文件/home/user/somedir/js/jquery-blockui/jquery.blockUI.min.js/
(请参阅最后一个斜杠 - 该文件确实存在):
warning: Skipping file
/home/user/somedir/js/jquery-blockui/jquery.blockUI.min.js/.
File does not exist.
那么aws s3 sync
只期望一个目录作为源传递吗?有谁知道,如何为单个文件做到这一点?我想编写一个脚本并传递一些需要更改的文件 - 这就是我问的原因。谢谢。
假设我有一个页面example.com/location
- 现在我希望缓存该 URL 的内容,除了页面的一个特定 HTML 部分,它应该定期更新。这个 HTML 区域不应该放在缓存中,而是应该在每次请求进入该部分时查询后端。这有可能吗?
我有以下基础设施:
80 -> Varnish -> Backend (NGINX, port 8080)
443 -> NGINX (SSL-Termination with HTTP/2 enabled) -> Varnish -> Backend (NGINX, port 8080)
我知道可以HTTP/2
使用 Varnish 的参数(端口 80)为前端连接启用协议-p feature=+http2
,但是后端连接呢?varnishlog -b
向我展示了所有后端通信都是使用HTTP/1.0
and执行的HTTP/1.1
。
如果有人能告诉我关于 Varnish 和 NGINX 的常见做法,我会非常高兴:
- 是否可以启用
HTTP/2
后端连接? - 这样做对性能有任何意义吗?
-p feature=+http2
在性能方面保持为通信启用参数是否有意义443 -> NGINX (SSL-Termination with HTTP/2 enabled) -> Varnish
?
关于后端通信(未加密):我知道这HTTP/2
与 TLS 加密有关,但也许有一些我没有听说过的调整,所以这就是为什么我认为最好问一下以便 100% 确定。感谢您的理解。
我正在尝试使用 NGINX 限制对 WordPress REST API 的访问(它是主要的后端server {}
块,没有代理):
location ~ ^/wp-json/ {
allow x.x.x.x;
deny all;
}
404
问题是,当尝试使用该配置访问 API 端点(例如)时,WordPress 总是返回 a www.example.com/wp-json/wp/v2/pages
(无论是浏览器,它正在传递所有 Cookie 和授权内容,或者cURL
):
curl -X GET -Ik https://www.example.com/wp-json/wp/v2/taxonomies
HTTP/2 404
date: Thu, 17 Jan 2019 12:40:12 GMT
content-type: application/json; charset=UTF-8
x-robots-tag: noindex
x-content-type-options: nosniff
access-control-expose-headers: X-WP-Total, X-WP-TotalPages
access-control-allow-headers: Authorization, Content-Type
但是,一旦我注释掉该location
块,当我使用浏览器访问该站点时就不会出现错误。
恐怕会发生这种情况,因为我需要传递一些 HTTP 标头以进行授权,因为我的 REQUEST 中有这些 HTTP 标头(使用 chrome devtools 检查):
:authority: www.example.com
:method: GET
:path: /wp-json/wp/v2/taxonomies?context=edit&lang=en&_locale=user
:scheme: https
accept: application/json, */*;q=0.1
accept-encoding: gzip, deflate, br
accept-language: en-US,en;q=0.9
(!) ---> authorization: Basic crf344...fdfs334
cache-control: no-cache
(!) ---> cookie: wordpress_test_cookie=WP+Cookie+check; wordpress_logged_in_282...7da; wp-settings-1=mfo...off; wp-settings-time-1=1547726728
pragma: no-cache
referer: https://www.example.com/wp-admin/post.php?post=193&action=edit
(!) ---> x-wp-nonce: df238g3ds2
有人可以帮我location
为 WordPress REST API 正确配置块吗?
编辑:
如果我添加相应的 HTTP 标头200
,我设法得到一个:cURL
curl -X GET -H "authorization: Basic c2F...TVY" \
-H "cookie: wordpress_test_cookie=WP+...7da; \
wp-settings-1=mfo...off; \
wp-settings-time-1=1547726728"
-H "x-wp-nonce: df238g3ds2" \
-H "referer: https://www.example.com/wp-admin/post.php?post=193&action=edit" \
-I https://www.example.com/wp-json/wp/v2/pages
我怎么能对 NGINXlocation
块做同样的事情?
我已经配置 systemd timesyncd 从 NTP 服务器获取时间:
/etc/systemd/timesyncd.conf > NTP=ca.pool.ntp.org
systemctl restart systemd-timesyncd.service
timedatectl set-ntp true
状态如下:
$ timedatectl status
...
Network time on: yes
NTP synchronized: no
正如输出所暗示的那样,时间尚未同步。有人可以帮我解决以下问题吗?
- timesyncd 与 NTP 同步需要多长时间?它以什么间隔执行此操作,我在哪里可以检查和更改它们?
- 在紧急情况下:我只能手动设置时间还是可以强制 timesyncd 立即与 NTP 服务器同步?
如果 Varnish 被设置为我的 NGINX 后端前面的默认缓存,我如何在 NGINX 后端检查客户端的原始 IP 并据此做出决定?
我只想允许某个目录访问某些 IP。Varnish 在 NGINX 前面,意味着每个请求都来自127.0.0.1
. 我正在考虑设置一些自定义 HTTP 标头,但是如何与location ~ /folder/ {}
部分一起检查呢?
我对使用 Varnish 时的最佳实践有点困惑:我看到很多我知道他们正在使用 Varnish 的网站,这些网站都Cache-Control: no-store, no-cache, must-revalidate
激活了 HTTP 标头。他们的网站内容很长一段时间都没有改变 - 那么他们为什么不使用浏览器缓存呢?也许他们想要更好地控制内容,如果他们需要快速更改某些内容,否则浏览器缓存中的内容会过时?
所以,基本上我想知道我是否应该利用清漆和浏览器缓存,或者只为网站提供清漆,它提供的内容不会改变?这里有什么规则,什么是“最佳实践”?通常我会选择 Varnish 和浏览器缓存,但我看到的上述网站让我对此感到困惑。
我有以下vcl_deliver
子程序:
sub vcl_deliver {
# Remove some HTTP-headers:
unset resp.http.Server;
unset resp.http.X-Varnish;
unset resp.http.Via;
unset resp.http.X-Cacheable;
unset resp.http.Age;
return (deliver);
}
现在奇怪的是,除了标头之外的所有其他 HTTP 标头都被删除了Server
(我已经curl
使用 Google Chrome 进行了检查)。当我使用 调试时varnishlog -g raw
,我得到以下信息:
202443 RespProtocol c HTTP/1.1
202443 RespStatus c 200
202443 RespReason c OK
202443 RespHeader c Server: nginx
202443 RespHeader c Content-Type: text/html; charset=UTF-8
202443 RespHeader c Vary: Accept-Encoding
202443 RespHeader c Cache-Control: no-cache, private
202443 RespHeader c Date: Sun, 12 Aug 2018 14:19:11 GMT
202443 RespHeader c X-Frame-Options: SAMEORIGIN
202443 RespHeader c X-XSS-Protection: 1; mode=block
202443 RespHeader c X-Content-Type-Options: nosniff
202443 RespHeader c Content-Encoding: gzip
202443 RespHeader c X-Varnish: 202443 168601
202443 RespHeader c Age: 69910
202443 RespHeader c Via: 1.1 varnish (Varnish/5.0)
202443 VCL_call c DELIVER [7/171]
202443 RespUnset c Server: nginx
202443 RespUnset c X-Varnish: 202443 168601
202443 RespUnset c Via: 1.1 varnish (Varnish/5.0)
202443 RespUnset c Age: 69910
202443 VCL_return c deliver
202443 Timestamp c Process: 1534153462.090447 0.000147 0.000147
202443 RespUnset c Content-Encoding: gzip
202443 RespHeader c Accept-Ranges: bytes
202443 Debug c "RES_MODE 40"
202443 RespHeader c Connection: close
202443 Gzip c U D - 0 0 0 0 0
202443 Timestamp c Resp: 1534153462.090535 0.000235 0.000088
202443 ReqAcct c 229 0 229 302 0 302
202443 End c
202442 SessClose c REQ_CLOSE 0.000
202442 End c
正如我们所见 ( RespUnset Server: nginx
) Varnish 正在尝试删除 HTTPServer
标头 - 但是为什么当我使用curl
Google Chrome 或 Google Chrome 进行调试时它仍然出现?
我正在使用 Varnish,我不太确定是否还应该删除Server: nginx
HTTP 标头。为什么有人需要知道我在使用 NGINX?可以从响应中删除此 HTTP 标头还是在某个地方需要它?从安全的角度来看,这样做可能会更好?
如何在运行的 Linux (Debian) EC2 实例中从 CLI 显示当前 VPC?
每次我尝试制作时mysqldump
都会出现以下错误:
$> mysqldump --single-transaction --host host -u user -p db > db.sql
mysqldump: Couldn't execute 'SELECT COLUMN_NAME, JSON_EXTRACT(HISTOGRAM,
'$."number-of-buckets-specified"') FROM
information_schema.COLUMN_STATISTICS WHERE SCHEMA_NAME = 'db' AND
TABLE_NAME = 'Absence';':
Unknown table 'COLUMN_STATISTICS' in information_schema (1109)
结果是一个不完整的转储。奇怪的是,从另一台主机执行的相同命令可以正常工作而不会引发任何错误。有人遇到过同样的问题吗?
我正在使用 mysql-client8.0
并尝试访问 mysql5-7
服务器 - 也许这就是原因?