Suponha que eu atualize o kernel de um sistema Debian em execução usando apt-get upgrade linux-image-amd64
um número de versão menor maior (por exemplo, 5.10.10
para 5.10.11
). Eu tenho que reiniciar o servidor Debian para que a atualização tenha efeito?
manifestor's questions
Eu tenho a seguinte entrada DNS para um dos servidores de e-mail dos meus clientes:
_dmarc IN TXT "v=DMARC1; p=none; rua=mailto:[email protected]"
Este é o único servidor de e-mail que estou administrando, que possui uma entrada DNS DMARC - em outros casos, SPF e DKIM sempre foram suficientes para o servidor de e-mail funcionar bem.
O chato é que recebo vários relatórios DMARC do Gmail, Yahoo, etc. todos os dias e não preciso deles. Como posso parar de receber esses relatórios DMARC?
Devo apenas remover a rua
parte da entrada DNS?
Depois de instalar e habilitar sysstat
em uma instância do AWS EC2, recebo as seguintes entradas de log toda vez que sysstat
é executado (do cronjob em /etc/cron.d/sysstat
) no meu /var/log/syslog
arquivo no Debian:
kernel: [95827.487657] ena: Feature 27 isn't supported
Alguém sabe o que isso significa? É importante ou pode ser ignorado? Como eu poderia resolver esse problema?
Criei um usuário do IAM (somente CLI) com AmazonRDSReadOnlyAccess
permissões. Agora, toda vez que tento listar minhas instâncias de banco de dados, recebo um objeto JSON vazio, mesmo tendo uma instância RDS ativa:
aws rds describe-db-instances
{
"DBInstances": []
}
Também tentei especificar meu id de instância (o identificador de instância existe com certeza):
aws rds describe-db-instances --db-instance-identifier mydb
An error occurred (DBInstanceNotFound) when calling the \
DescribeDBInstances operation: DBInstance vipbilet-db not found.
O que eu estou fazendo errado aqui?
Preciso de uma instância EC2 com 4 CPUs e 2, no máximo 4 GB de RAM, o que não é oferecido pela AWS. Portanto, minha pergunta é: é possível criar seu próprio tipo de instância personalizado com CPU e RAM de acordo com seus requisitos?
Como a pergunta implica, quero alterar/definir alguns cabeçalhos HTTP para um único objeto em um bucket do S3 via CLI. Isto é o que eu tentei até agora:
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
O problema é que isso aws s3 sync
me diz que ele não conseguiu encontrar o arquivo /home/user/somedir/js/jquery-blockui/jquery.blockUI.min.js/
(veja a última barra - o arquivo existe na verdade) no meu sistema de arquivos:
warning: Skipping file
/home/user/somedir/js/jquery-blockui/jquery.blockUI.min.js/.
File does not exist.
Então aws s3 sync
, espera apenas que um diretório seja passado como fonte? Alguém tem uma idéia, como fazer isso para um único arquivo? Eu quero escrever um script e passar alguns arquivos, que precisam ser alterados - por isso estou perguntando. Obrigado.
Digamos que eu tenha uma página em example.com/location
- agora eu quero que o conteúdo desse URL seja armazenado em cache, exceto apenas uma parte HTML específica da página, que deve ser atualizada regularmente. Essa área HTML não deve ser colocada no cache e o back-end deve ser consultado sempre que uma solicitação for recebida para essa parte. Isso é de alguma forma possível?
Tenho a seguinte infraestrutura:
80 -> Varnish -> Backend (NGINX, port 8080)
443 -> NGINX (SSL-Termination with HTTP/2 enabled) -> Varnish -> Backend (NGINX, port 8080)
Eu sei que é possível habilitar HTTP/2
protocolo para conexões frontend usando o -p feature=+http2
parâmetro para Varnish (porta 80), mas e as conexões backend? varnishlog -b
me mostra que toda a comunicação de back-end é realizada usando HTTP/1.0
e HTTP/1.1
.
Eu ficaria muito satisfeito se alguém pudesse me dizer qual é a prática comum em relação ao Varnish e ao NGINX:
- É possível habilitar
HTTP/2
para as conexões de back-end? - Faz algum sentido fazê-lo em relação ao desempenho?
- Faz sentido em relação ao desempenho manter o
-p feature=+http2
parâmetro habilitado para a443 -> NGINX (SSL-Termination with HTTP/2 enabled) -> Varnish
comunicação em termos de desempenho?
Em relação à comunicação de back-end (que não é criptografada): eu sei que HTTP/2
está vinculada à criptografia TLS, mas talvez haja algum ajuste que eu não tenha ouvido falar, então é por isso que acho melhor perguntar para ter 100% de certeza. Obrigado pela sua compreensão.
Estou tentando restringir o acesso a uma API REST do WordPress com NGINX (é o principal server {}
bloco de back-end, sem proxy):
location ~ ^/wp-json/ {
allow x.x.x.x;
deny all;
}
O problema é que o WordPress sempre retorna um 404
ao tentar acessar um endpoint da API ( www.example.com/wp-json/wp/v2/pages
por exemplo) com essa configuração (não importa se é o navegador, que está passando todos os cookies e coisas de autorização, ou 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
Mas uma vez que comento o location
bloco, não recebo erros ao acessar o site com um navegador.
Receio que isso aconteça porque preciso passar alguns cabeçalhos HTTP para fins de autorização, pois tenho esses cabeçalhos HTTP no meu REQUEST (verificado com 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
Alguém poderia me ajudar por favor para configurar o location
bloco corretamente para a API REST do WordPress?
EDITAR:
Consegui obter um 200
com cURL
se adicionar os cabeçalhos HTTP correspondentes:
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
Como eu poderia fazer o mesmo com o location
bloco NGINX?
Configurei o systemd timesyncd para obter a hora de um servidor NTP:
/etc/systemd/timesyncd.conf > NTP=ca.pool.ntp.org
systemctl restart systemd-timesyncd.service
timedatectl set-ntp true
O estado é o seguinte:
$ timedatectl status
...
Network time on: yes
NTP synchronized: no
Como a saída indica, a hora ainda não está sincronizada. Alguém pode me ajudar nas seguintes questões?
- Quanto tempo levará para o timesyncd sincronizar com o NTP? Em que intervalos faz isso, onde posso verificá-los e alterá-los?
- Em casos urgentes: Só posso definir a hora manualmente ou posso forçar o timesyncd a sincronizar imediatamente com o servidor NTP?
Se o Varnish estiver definido como o Cache padrão na frente do meu back-end NGINX, como posso verificar no back-end NGINX o IP original do cliente e tomar uma decisão com base nisso?
Eu quero permitir um determinado diretório apenas para determinados IPs. O verniz estar na frente do NGINX significa que todos os pedidos vêm do 127.0.0.1
. Estou pensando em definir algum cabeçalho HTTP personalizado, mas como posso verificar isso em conjunto com a location ~ /folder/ {}
seção?
Estou um pouco confuso sobre qual é a melhor prática ao usar o Varnish: vi muitos sites onde sei que eles estavam usando o Varnish, que tinha Cache-Control: no-store, no-cache, must-revalidate
cabeçalhos HTTP ativados. O conteúdo do site deles não muda há muito tempo - então por que eles não estão usando o cache do navegador? Talvez eles queiram ter um controle melhor sobre o conteúdo, caso precisem alterar algo rapidamente, que de outra forma estaria em uma condição obsoleta no cache do navegador?
Então, basicamente eu gostaria de saber se devo aproveitar o cache do Varnish AND Browser, ou apenas o Varnish para um site, que serve conteúdo que não muda? Existe alguma regra aqui, o que seria "melhor prática"? Normalmente, eu teria optado pelo cache do Varnish AND Browser, mas os sites mencionados acima me deixaram confuso sobre isso.
Tenho a seguinte vcl_deliver
sub-rotina:
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);
}
Agora, o estranho é que todos os outros cabeçalhos HTTP são removidos, exceto o Server
cabeçalho (verifiquei com curl
e com o Google Chrome). Quando depuro com varnishlog -g raw
, recebo as seguintes informações:
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
Como podemos ver ( RespUnset Server: nginx
) o Varnish está tentando remover o Server
cabeçalho HTTP - mas por que ele ainda aparece quando depuro com curl
o Google Chrome?
Estou usando o Varnish e não tenho certeza se também devo remover o Server: nginx
cabeçalho HTTP. Por que alguém precisa saber que estou usando o NGINX? Tudo bem remover esse cabeçalho HTTP da resposta ou é necessário em algum lugar? De uma perspectiva de segurança, provavelmente é melhor fazê-lo?
Como é possível exibir a VPC atual da CLI em uma instância do EC2 do Linux (Debian) em execução?
Toda vez que tento fazer um mysqldump
, recebo o seguinte erro:
$> 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)
O resultado é um dump que não está completo. O estranho é que o mesmo comando, executado de outro host, funciona sem lançar nenhum erro. Alguém passou pelo mesmo problema?
Estou usando mysql-client 8.0
e tento acessar um 5-7
servidor mysql - talvez seja esse o motivo?