Você está na página 1de 15

17/05/2021 Hospedar o ASP.

NET Core no Linux com o Apache | Microsoft Docs

Hospedar o ASP.NET Core no Linux com o


Apache
10/04/20208 minutos para o fim da leitura

Neste artigo
Pré-requisitos
Publicar e copiar o aplicativo
Configurar um servidor proxy
Monitorar o aplicativo
Proteção de dados
Proteger o aplicativo
Sugestões adicionais do Apache
Recursos adicionais

Por Shayne Boyer

Usando este guia, saiba como configurar o Apache como um servidor proxy reverso no CentOS
7 para redirecionar o tráfego HTTP para um aplicativo Web ASP.NET Core em execução
no Kestrel servidor. A extensão mod_proxy e os módulos relacionados criam o proxy reverso do
servidor.

Pré-requisitos
Servidor que executa o CentOS 7 com uma conta de usuário padrão com privilégio sudo.
Instale o runtime do .NET Core no servidor.

1. Visite a página Baixar .NET Core.


2. Selecione a versão mais recente não prévia do .NET Core.
3. Baixe o runtime não versão prévia mais recente na tabela em Executar aplicativos –
Runtime.
4. Selecione o link Instruções do Gerenciador de Pacotes do Linux e siga as instruções do
CentOS.

Um aplicativo ASP.NET Core existente.

A qualquer momento no futuro após atualizar a estrutura compartilhada, reinicie o ASP.NET Core
hospedados pelo servidor.

Publicar e copiar o aplicativo


Configurar o aplicativo para um implantação dependente de estrutura.

Se o aplicativo for executado localmente e não estiver configurado para fazer conexões seguras
(HTTPS), adote uma das seguintes abordagens:

https://docs.microsoft.com/pt-br/aspnet/core/host-and-deploy/linux-apache?view=aspnetcore-5.0 1/15
17/05/2021 Hospedar o ASP.NET Core no Linux com o Apache | Microsoft Docs

Configure o aplicativo para lidar com conexões seguras locais. Para obter mais informações,
veja a seção Configuração de HTTPS.
Remova  https://localhost:5001  (se houver) da propriedade  applicationUrl  no
arquivo Properties/launchSettings.json.

Execute dotnet publish do ambiente de desenvolvimento para empacotar um aplicativo em um


diretório (por exemplo, bin/Release/<target_framework_moniker>/publish) que pode ser executado
no servidor:

CLI do .NET Copiar

dotnet publish --configuration Release

O aplicativo também poderá ser publicado como uma implantação autossuficiente se você preferir
não manter o runtime do .NET Core no servidor.

Copie o aplicativo ASP.NET Core para o servidor usando uma ferramenta que se integre ao fluxo de
trabalho da organização (por exemplo, SCP, SFTP). É comum para localizar os aplicativos Web no
diretório var (por exemplo, var/www/helloapp).

 Observação

Em um cenário de implantação de produção, um fluxo de trabalho de integração contínua faz


o trabalho de publicar o aplicativo e copiar os ativos para o servidor.

Configurar um servidor proxy


Um proxy reverso é uma configuração comum para atender a aplicativos Web dinâmicos. O proxy
reverso encerra a solicitação HTTP e a encaminha para o aplicativo ASP.NET.

Um servidor proxy encaminha solicitações de cliente para outro servidor em vez de atender às
solicitações em si. Um proxy reverso encaminha para um destino fixo, normalmente, em nome de
clientes arbitrários. Neste guia, o Apache é configurado como o proxy reverso em execução no
mesmo servidor que está atendendo Kestrel ao aplicativo ASP.NET Core.

Como as solicitações são encaminhadas por proxy reverso, use o Middleware de Cabeçalhos
Encaminhados do pacote Microsoft.AspNetCore.HttpOverrides. O middleware atualiza
o  Request.Scheme  usando o cabeçalho  X-Forwarded-Proto , de forma que URIs de redirecionamento
e outras políticas de segurança funcionam corretamente.

Qualquer componente que dependa do esquema, como autenticação, geração de link,


redirecionamentos e localização geográfica, deverá ser colocado depois de invocar o Middleware
de Cabeçalhos Encaminhados.

O middleware de cabeçalhos encaminhados deve ser executado antes de outro middleware. Essa
ordenação garantirá que o middleware conte com informações de cabeçalhos encaminhadas que
podem consumir os valores de cabeçalho para processamento. Para executar o middleware de

https://docs.microsoft.com/pt-br/aspnet/core/host-and-deploy/linux-apache?view=aspnetcore-5.0 2/15
17/05/2021 Hospedar o ASP.NET Core no Linux com o Apache | Microsoft Docs

cabeçalhos encaminhados após o diagnóstico e o middleware de tratamento de erros,


consulte ordem de middleware de cabeçalhos encaminhados.

UseForwardedHeadersInvoque o método na parte superior de antes de chamar


outro  Startup.Configure  middleware. Configure o middleware para encaminhar os cabeçalhos  X-
Forwarded-For  e  X-Forwarded-Proto :

C# Copiar

// using Microsoft.AspNetCore.HttpOverrides;

app.UseForwardedHeaders(new ForwardedHeadersOptions
{
ForwardedHeaders = ForwardedHeaders.XForwardedFor |
ForwardedHeaders.XForwardedProto
});

app.UseAuthentication();

Se nenhum ForwardedHeadersOptions for especificado para o middleware, os cabeçalhos padrão


para encaminhar serão  None .

Proxies em execução em endereços de loopback ( ), incluindo o endereço  127.0.0.0/8,


[::1]  localhost padrão (127.0.0.1), são confiáveis por padrão. Se outros proxies ou redes confiáveis
em que a organização trata solicitações entre a Internet e o servidor Web, adicione-os à lista
de KnownProxies ou KnownNetworks com ForwardedHeadersOptions. O exemplo a seguir adiciona
um servidor proxy confiável no endereço IP 10.0.0.100 ao Middleware de cabeçalhos
encaminhados  KnownProxies  em  Startup.ConfigureServices :

C# Copiar

// using System.Net;

services.Configure<ForwardedHeadersOptions>(options =>
{
options.KnownProxies.Add(IPAddress.Parse("10.0.0.100"));
});

Para obter mais informações, consulte Configure o ASP.NET Core para trabalhar com servidores
proxy e balanceadores de carga.

Instalar o Apache
Atualize os pacotes CentOS para as respectivas versões estáveis mais recentes:

Bash Copiar

sudo yum update -y

Instale o servidor Web do Apache no CentOS com um único comando  yum :


https://docs.microsoft.com/pt-br/aspnet/core/host-and-deploy/linux-apache?view=aspnetcore-5.0 3/15
17/05/2021 Hospedar o ASP.NET Core no Linux com o Apache | Microsoft Docs

Bash Copiar

sudo yum -y install httpd mod_ssl

Saída de exemplo depois de executar o comando:

Bash Copiar

Downloading packages:
httpd-2.4.6-40.el7.centos.4.x86_64.rpm | 2.7 MB 00:00:01
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
Installing : httpd-2.4.6-40.el7.centos.4.x86_64 1/1
Verifying : httpd-2.4.6-40.el7.centos.4.x86_64 1/1

Installed:
httpd.x86_64 0:2.4.6-40.el7.centos.4

Complete!

 Observação

Neste exemplo, o resultado reflete httpd.86_64, pois a versão do CentOS 7 é de 64 bits. Para
verificar o local em que o Apache está instalado, execute  whereis httpd em um prompt de
comando.

Configurar o Apache
Os arquivos de configuração do Apache estão localizados no diretório  /etc/httpd/conf.d/ .
Qualquer arquivo com a extensão .conf é processado em ordem alfabética, além dos arquivos de
configuração do módulo em  /etc/httpd/conf.modules.d/ , que contém todos os arquivos de
configuração necessários para carregar os módulos.

Crie um arquivo de configuração chamado helloapp.conf para o aplicativo:

Copiar

<VirtualHost *:*>
RequestHeader set "X-Forwarded-Proto" expr=%{REQUEST_SCHEME}
</VirtualHost>

<VirtualHost *:80>
ProxyPreserveHost On
ProxyPass / http://127.0.0.1:5000/
ProxyPassReverse / http://127.0.0.1:5000/
ServerName www.example.com
ServerAlias *.example.com
ErrorLog ${APACHE_LOG_DIR}helloapp-error.log
https://docs.microsoft.com/pt-br/aspnet/core/host-and-deploy/linux-apache?view=aspnetcore-5.0 4/15
17/05/2021 Hospedar o ASP.NET Core no Linux com o Apache | Microsoft Docs

CustomLog ${APACHE_LOG_DIR}helloapp-access.log common


</VirtualHost>

O bloco  VirtualHost  pode aparecer várias vezes, em um ou mais arquivos em um servidor. No


arquivo de configuração anterior, o Apache aceita tráfego público na porta 80. O
domínio  www.example.com  está sendo atendido e o alias  *.example.com  é resolvido para o mesmo
site. Para obter mais informações, consulte Suporte a host virtual baseado em nome. As solicitações
passadas por proxy na raiz para a porta 5000 do servidor em 127.0.0.1. Para a comunicação
bidirecional,  ProxyPass  e  ProxyPassReverse são necessários. Para alterar Kestrel o IP/porta do ,
consulte Kestrel : Configuração do ponto de extremidade.

 Aviso

Falha ao especificar uma diretiva ServerName no bloco VirtualHost expõe seu aplicativo para


vulnerabilidades de segurança. Associações de curinga de subdomínio (por
exemplo,  *.example.com ) não oferecerão esse risco de segurança se você controlar o domínio
pai completo (em vez de  *.com , o qual é vulnerável). Para obter mais informações, consulte
rfc7230 section-5.4.

O registro em log pode ser configurado por  VirtualHost  usando


diretivas  ErrorLog  e  CustomLog .  ErrorLog  é o local em que o servidor registrará em log os erros,
enquanto  CustomLog  define o nome de arquivo e o formato do arquivo de log. Nesse caso, esse é o
local em que as informações de solicitação são registradas em log. Há uma linha para cada
solicitação.

Salve o arquivo e teste a configuração. Se tudo passar, a resposta deverá ser  Syntax [OK] .

Bash Copiar

sudo service httpd configtest

Reinicie o Apache:

Bash Copiar

sudo systemctl restart httpd


sudo systemctl enable httpd

Monitorar o aplicativo
O Apache agora está definido para encaminhar solicitações feitas para  http://localhost:80  o
ASP.NET Core em execução no Kestrel  http://127.0.0.1:5000  . No entanto, o Apache não está
definido para gerenciar o Kestrel processo. Use systemde crie um arquivo de serviço para iniciar e
monitorar o aplicativo Web subjacente. systemd é um sistema de inicialização que fornece muitos
recursos poderosos para iniciar, parar e gerenciar processos.

https://docs.microsoft.com/pt-br/aspnet/core/host-and-deploy/linux-apache?view=aspnetcore-5.0 5/15
17/05/2021 Hospedar o ASP.NET Core no Linux com o Apache | Microsoft Docs

Criar o arquivo de serviço


Crie o arquivo de definição de serviço:

Bash Copiar

sudo nano /etc/systemd/system/kestrel-helloapp.service

Eis um exemplo de arquivo de serviço para o aplicativo:

Copiar

[Unit]
Description=Example .NET Web API App running on CentOS 7

[Service]
WorkingDirectory=/var/www/helloapp
ExecStart=/usr/local/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=apache
Environment=ASPNETCORE_ENVIRONMENT=Production

[Install]
WantedBy=multi-user.target

No exemplo anterior, o usuário que gerencia o serviço é especificado pela  User  opção . O usuário
(  apache  ) deve existir e ter a propriedade adequada dos arquivos do aplicativo.

Use  TimeoutStopSec  para configurar a duração do tempo de espera para o aplicativo desligar
depois de receber o sinal de interrupção inicial. Se o aplicativo não desligar nesse período, o
SIGKILL será emitido para encerrá-lo. Forneça o valor como segundos sem unidade (por
exemplo,  150 ), um valor de duração (por exemplo,  2min 30s ) ou  infinity  para desabilitar o tempo
limite.  TimeoutStopSec  é revertido para o valor padrão de  DefaultTimeoutStopSec  no arquivo de
configuração do gerenciador (systemd-system.conf, system.conf.d, systemd-user.conf e user.conf.d). O
tempo limite padrão para a maioria das distribuições é de 90 segundos.

Copiar

# The default value is 90 seconds for most distributions.


TimeoutStopSec=90

Alguns valores (por exemplo, cadeias de conexão de SQL) devem ser escapadas para que os
provedores de configuração leiam as variáveis de ambiente. Use o seguinte comando para gerar
um valor corretamente com caracteres de escape para uso no arquivo de configuração:

Console Copiar

https://docs.microsoft.com/pt-br/aspnet/core/host-and-deploy/linux-apache?view=aspnetcore-5.0 6/15
17/05/2021 Hospedar o ASP.NET Core no Linux com o Apache | Microsoft Docs

systemd-escape "<value-to-escape>"

Separadores do tipo dois-pontos ( : ) não são compatíveis com nomes de variáveis de ambiente.
Use um sublinhado duplo ( __ ) no lugar de dois-pontos. O provedor de configuração de Variáveis
de Ambiente converte caracteres de sublinhado duplo em dois-pontos quando as variáveis de
ambiente são lidas na configuração. No exemplo a seguir, a chave de cadeia de
conexão  ConnectionStrings:DefaultConnection  está definida no arquivo de definição de serviço
como  ConnectionStrings__DefaultConnection :

Copiar

Environment=ConnectionStrings__DefaultConnection={Connection String}

Salve o arquivo e habilite o serviço:

Bash Copiar

sudo systemctl enable kestrel-helloapp.service

Inicie o serviço e verifique se ele está em execução:

Bash Copiar

sudo systemctl start kestrel-helloapp.service


sudo systemctl status kestrel-helloapp.service

◝ kestrel-helloapp.service - Example .NET Web API App running on CentOS 7


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

Com o proxy reverso configurado e Kestrel gerenciado por meio do sistema, o aplicativo Web é
totalmente configurado e pode ser acessado em um navegador no computador local
em  http://localhost  . Inspecionar os cabeçalhos de resposta, o cabeçalho do servidor indica que
o aplicativo ASP.NET Core é servido por Kestrel :

Copiar

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

https://docs.microsoft.com/pt-br/aspnet/core/host-and-deploy/linux-apache?view=aspnetcore-5.0 7/15
17/05/2021 Hospedar o ASP.NET Core no Linux com o Apache | Microsoft Docs

Exibir logs
Como o aplicativo Web usando o Kestrel é gerenciado usando o sistema, eventos e processos são
registrados em um diário centralizado. No entanto, esse diário contém todas as entradas para
todos os serviços e processos gerenciados por systemd. Para exibir os itens específicos de  kestrel-
helloapp.service , use o seguinte comando:

Bash Copiar

sudo journalctl -fu kestrel-helloapp.service

Para filtragem de hora, especifique opções de tempo com o comando. Por exemplo, use  --since
today  para filtrar o dia atual ou  --until 1 hour ago  para ver as entradas da hora anterior. Para
obter mais informações, confira a página de manual para journalctl.

Bash Copiar

sudo journalctl -fu kestrel-helloapp.service --since "2016-10-18" --until "2016-10-18


04:00"

Proteção de dados
A ASP.NET Core pilha de proteção de dados é usada por vários ASP.NET Core middleware,
incluindo o middleware de autenticação (por exemplo, cookie middleware) e as proteções de
solicitação entre sites forjada (CSRF). Mesmo se as APIs de Proteção de Dados não forem chamadas
pelo código do usuário, a proteção de dados deverá ser configurada para criar um repositório de
chaves criptográfico persistente. Se a proteção de dados não estiver configurada, as chaves serão
mantidas na memória e descartadas quando o aplicativo for reiniciado.

Se o token de autenticação for armazenado na memória quando o aplicativo for reiniciado:

Os cookie tokens de autenticação baseados em todos os são invalidados.


Os usuários precisam entrar novamente na próxima solicitação deles.
Todos os dados protegidos com o token de autenticação não poderão mais ser
descriptografados. Isso pode incluir tokens CSRF e ASP.NET Core cookie s de TempData do
MVC.

Para configurar a proteção de dados de modo que ela mantenha e criptografe o token de
autenticação, consulte:

Provedores de armazenamento de chaves no ASP.NET Core


Criptografia de chave em repouso no Windows e no Azure usando ASP.NET Core

Proteger o aplicativo

Configurar o firewall
https://docs.microsoft.com/pt-br/aspnet/core/host-and-deploy/linux-apache?view=aspnetcore-5.0 8/15
17/05/2021 Hospedar o ASP.NET Core no Linux com o Apache | Microsoft Docs

Firewalld é um daemon dinâmico para gerenciar o firewall com suporte para zonas de rede. Portas
e filtragem de pacote ainda podem ser gerenciados pelo iptables. Firewallddeve ser instalado por
padrão.  yum  pode ser usado para instalar o pacote ou verificar se ele está instalado.

Bash Copiar

sudo yum install firewalld -y

Use  firewalld  para abrir somente as portas necessárias para o aplicativo. Nesse caso, as portas 80
e 443 são usadas. Os comandos a seguir definem permanentemente as portas 80 e 443 para
estarem abertas:

Bash Copiar

sudo firewall-cmd --add-port=80/tcp --permanent


sudo firewall-cmd --add-port=443/tcp --permanent

Recarregue as configurações de firewall. Verifique os serviços e as portas disponíveis na zona


padrão. As opções estão disponíveis por meio da inspeção de  firewall-cmd -h .

Bash Copiar

sudo firewall-cmd --reload


sudo firewall-cmd --list-all

Bash Copiar

public (default, active)


interfaces: eth0
sources:
services: dhcpv6-client
ports: 443/tcp 80/tcp
masquerade: no
forward-ports:
icmp-blocks:
rich rules:

Configuração de HTTPS
Configurar o aplicativo para conexões seguras (HTTPS) locais

O comando dotnet run usa o arquivo Properties/launchSettings.json do aplicativo, que configura o


aplicativo para escutar nas URLs fornecidas pela propriedade  applicationUrl  (por
exemplo,  https://localhost:5001;http://localhost:5000 ).

Configure o aplicativo para usar um certificado no desenvolvimento para o comando  dotnet


run  ou no ambiente de desenvolvimento (F5 ou Ctrl + F5 no Visual Studio Code) usando uma das
seguintes abordagens:

https://docs.microsoft.com/pt-br/aspnet/core/host-and-deploy/linux-apache?view=aspnetcore-5.0 9/15
17/05/2021 Hospedar o ASP.NET Core no Linux com o Apache | Microsoft Docs

Substituir o certificado padrão da configuração (Recomendado)


KestrelServerOptions.ConfigureHttpsDefaults

Configurar o proxy reverso para conexões de cliente seguras (HTTPS)

 Aviso

A configuração de segurança nesta seção é uma configuração geral a ser usada como ponto
de partida para personalização adicional. Não podemos fornecer suporte para ferramentas,
servidores e sistemas operacionais de terceiros. Use a configuração nesta seção por sua conta e
risco. Para obter mais informações, acesse os seguintes recursos:

Criptografia do Apache SSL/TLS (documentação do Apache)


Gerador de configuração de SSL mozilla.org

Para configurar o Apache para HTTPS, o módulo mod_ssl é usado. Quando o módulo httpd foi


instalado, o módulo mod_ssl também foi instalado. Se ele não foi instalado, use  yum  para adicioná-
lo à configuração.

Bash Copiar

sudo yum install mod_ssl

Para impor o HTTPS, instale o módulo  mod_rewrite  para habilitar a regravação de URL:

Bash Copiar

sudo yum install mod_rewrite

Modifique o arquivo HelloApp. conf para habilitar a comunicação segura na porta 443.

O exemplo a seguir não configura o servidor para redirecionar solicitações inseguras. É


recomendável usar o middleware de redirecionamento de HTTPS. Para obter mais informações,
consulte Impor HTTPS no ASP.NET Core.

 Observação

Para ambientes de desenvolvimento em que a configuração do servidor manipula o


redirecionamento seguro em vez do middleware de redirecionamento de HTTPS, é
recomendável usar redirecionamentos temporários (302) em vez de redirecionamentos
permanentes (301). O cache de link pode causar um comportamento instável em ambientes de
desenvolvimento.

Adicionar um  Strict-Transport-Security  cabeçalho (HSTS) garante que todas as solicitações


subsequentes feitas pelo cliente sejam feitas por HTTPS. Para obter diretrizes sobre como
definir  Strict-Transport-Security  o header, consulte Impor HTTPS no ASP.NET Core .

Copiar
https://docs.microsoft.com/pt-br/aspnet/core/host-and-deploy/linux-apache?view=aspnetcore-5.0 10/15
17/05/2021 Hospedar o ASP.NET Core no Linux com o Apache | Microsoft Docs

<VirtualHost *:*>
RequestHeader set "X-Forwarded-Proto" expr=%{REQUEST_SCHEME}
</VirtualHost>

<VirtualHost *:443>
Protocols h2 http/1.1
ProxyPreserveHost On
ProxyPass / http://127.0.0.1:5000/
ProxyPassReverse / http://127.0.0.1:5000/
ErrorLog /var/log/httpd/helloapp-error.log
CustomLog /var/log/httpd/helloapp-access.log common
SSLEngine on
SSLProtocol all -SSLv3 -TLSv1 -TLSv1.1
SSLHonorCipherOrder off
SSLCompression off
SSLSessionTickets on
SSLUseStapling off
SSLCertificateFile /etc/pki/tls/certs/localhost.crt
SSLCertificateKeyFile /etc/pki/tls/private/localhost.key
SSLCipherSuite ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-
SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-
POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-
SHA384
</VirtualHost>

 Observação

Este exemplo usa um certificado gerado localmente. SSLCertificateFile deve ser o arquivo de


certificado primário para o nome de domínio. SSLCertificateKeyFiledeve ser o arquivo de
chave gerado quando o CSR é criado. SSLCertificateChainFile deve ser o arquivo de certificado
intermediário (se houver) fornecido pela autoridade de certificação.

O Apache HTTP Server versão 2.4.43 ou mais recente é necessário para operar um servidor
Web TLS 1.3 com OpenSSL 1.1.1.

 Observação

O exemplo anterior desabilita o OCSP (Protocolo de Status de Certificado Online). Para obter
mais informações e diretrizes sobre como habilenciar o OCSP, consulte Stapling do OCSP
(documentação do Apache).

Salve o arquivo e teste a configuração:

Bash Copiar

sudo service httpd configtest

Reinicie o Apache:

https://docs.microsoft.com/pt-br/aspnet/core/host-and-deploy/linux-apache?view=aspnetcore-5.0 11/15
17/05/2021 Hospedar o ASP.NET Core no Linux com o Apache | Microsoft Docs

Bash Copiar

sudo systemctl restart httpd

Sugestões adicionais do Apache

Reiniciar aplicativos com atualizações de estrutura


compartilhada
Depois de atualizar a estrutura compartilhada no servidor, reinicie o ASP.NET Core hospedados
pelo servidor.

Cabeçalhos adicionais
Para proteger contra ataques mal-intencionados, há alguns headers que devem ser modificados ou
adicionados. Verifique se o módulo  mod_headers  está instalado:

Bash Copiar

sudo yum install mod_headers

Proteger o Apache contra ataques de clickjacking


Clickjacking, também conhecido como um ataque por inferência na interface do usuário, é um
ataque mal-intencionado em que o visitante do site é levado a clicar em um link ou botão em uma
página diferente daquela que está visitando atualmente. Use  X-FRAME-OPTIONS  para proteger o site.

Para atenuar ataques de clickjacking:

1. Edite o arquivo httpd.conf:

Bash Copiar

sudo nano /etc/httpd/conf/httpd.conf

Adicione a linha  Header append X-FRAME-OPTIONS "SAMEORIGIN" .

2. Salve o arquivo.

3. Reinicie o Apache.

Detecção de tipo MIME

https://docs.microsoft.com/pt-br/aspnet/core/host-and-deploy/linux-apache?view=aspnetcore-5.0 12/15
17/05/2021 Hospedar o ASP.NET Core no Linux com o Apache | Microsoft Docs

O cabeçalho  X-Content-Type-Options  impedirá o Internet Explorer de farejar por MIME(determinar


o  Content-Type  de um arquivo com base no conteúdo do arquivo). Se o servidor define o
cabeçalho  Content-Type  para  text/html  com a opção  nosniff definida, o Internet Explorer
renderiza o conteúdo como  text/html , independentemente do conteúdo do arquivo.

Edite o arquivo httpd.conf:

Bash Copiar

sudo nano /etc/httpd/conf/httpd.conf

Adicione a linha  Header set X-Content-Type-Options "nosniff" . Salve o arquivo. Reinicie o Apache.

Balanceamento de carga
Este exemplo mostra como configurar o Apache no CentOS 7 e Kestrel no mesmo computador de
instância. Para não ter um único ponto de falha; usar mod_proxy_balancer e modificar
o VirtualHost permitiria gerenciar várias instâncias dos aplicativos Web por trás do servidor proxy
do Apache.

Bash Copiar

sudo yum install mod_proxy_balancer

No arquivo de configuração mostrado abaixo, uma instância adicional do  helloapp  é configurada
para ser executada na porta 5001. A seção Proxy é definida com uma configuração de balanceador
com dois membros para balancear carga de byrequests.

Copiar

<VirtualHost *:*>
RequestHeader set "X-Forwarded-Proto" expr=%{REQUEST_SCHEME}
</VirtualHost>

<VirtualHost *:80>
RewriteEngine On
RewriteCond %{HTTPS} !=on
RewriteRule ^/?(.*) https://%{SERVER_NAME}/$1 [R,L]
</VirtualHost>

<VirtualHost *:443>
ProxyPass / balancer://mycluster/

ProxyPassReverse / http://127.0.0.1:5000/
ProxyPassReverse / http://127.0.0.1:5001/

<Proxy balancer://mycluster>
BalancerMember http://127.0.0.1:5000
BalancerMember http://127.0.0.1:5001
ProxySet lbmethod=byrequests
</Proxy>
https://docs.microsoft.com/pt-br/aspnet/core/host-and-deploy/linux-apache?view=aspnetcore-5.0 13/15
17/05/2021 Hospedar o ASP.NET Core no Linux com o Apache | Microsoft Docs

<Location />
SetHandler balancer
</Location>
ErrorLog /var/log/httpd/helloapp-error.log
CustomLog /var/log/httpd/helloapp-access.log common
SSLEngine on
SSLProtocol all -SSLv2
SSLCipherSuite ALL:!ADH:!EXPORT:!SSLv2:!RC4+RSA:+HIGH:+MEDIUM:!LOW:!RC4
SSLCertificateFile /etc/pki/tls/certs/localhost.crt
SSLCertificateKeyFile /etc/pki/tls/private/localhost.key
</VirtualHost>

Limites de taxa
Usando mod_ratelimit, que está incluído no módulo httpd, a largura de banda de clientes pode ser
limitada:

Bash Copiar

sudo nano /etc/httpd/conf.d/ratelimit.conf

O arquivo de exemplo limita a largura de banda a 600 KB/s no local raiz:

Copiar

<IfModule mod_ratelimit.c>
<Location />
SetOutputFilter RATE_LIMIT
SetEnv rate-limit 600
</Location>
</IfModule>

Campos de cabeçalho da solicitação muito grandes


As configurações padrão do servidor proxy normalmente limitam os campos de header de
solicitação a 8.190 bytes. Um aplicativo pode exigir campos mais longos do que o padrão (por
exemplo, aplicativos que usam Azure Active Directory). Se campos mais longos são necessários, a
diretiva LimitRequestFieldSize do servidor proxy requer ajuste. O valor a ser aplicado depende do
cenário. Para obter mais informações, confira a documentação do servidor.

 Aviso

Não aumente o valor padrão de  LimitRequestFieldSize  a menos que necessário. Aumentar
esse valor aumenta o risco de estouro de buffer (estouro) e ataques de DoS (negação de
serviço) por usuários mal-intencionados.

https://docs.microsoft.com/pt-br/aspnet/core/host-and-deploy/linux-apache?view=aspnetcore-5.0 14/15
17/05/2021 Hospedar o ASP.NET Core no Linux com o Apache | Microsoft Docs

Recursos adicionais
Pré-requisitos para o .NET Core no Linux
Solucionar problemas e depurar ASP.NET principais projetos
Configure o ASP.NET Core para trabalhar com servidores proxy e balanceadores de carga

https://docs.microsoft.com/pt-br/aspnet/core/host-and-deploy/linux-apache?view=aspnetcore-5.0 15/15

Você também pode gostar