0% acharam este documento útil (0 voto)
13 visualizações28 páginas

Linux - Serviços de Rede - HTTP

Sistemas operacionais HTTP

Enviado por

lerlivrosdrive
Direitos autorais
© © All Rights Reserved
Levamos muito a sério os direitos de conteúdo. Se você suspeita que este conteúdo é seu, reivindique-o aqui.
Formatos disponíveis
Baixe no formato PDF, TXT ou leia on-line no Scribd
0% acharam este documento útil (0 voto)
13 visualizações28 páginas

Linux - Serviços de Rede - HTTP

Sistemas operacionais HTTP

Enviado por

lerlivrosdrive
Direitos autorais
© © All Rights Reserved
Levamos muito a sério os direitos de conteúdo. Se você suspeita que este conteúdo é seu, reivindique-o aqui.
Formatos disponíveis
Baixe no formato PDF, TXT ou leia on-line no Scribd
Você está na página 1/ 28

Serviços de rede

HTTP

Prof. Alex Furtunato


[email protected]
 Introdução
 Protocolo HTTP
Agenda  Servidor Nginx
Eu quero o site
http://www.ifrn.edu.br/
Comunicação
Web
Ok, aqui está:
Cliente
<HTML>
<body> Servidor
Conteúdo

</body>
</HTML>
GET / HTTP/1.1
Host: portal.ifrn.edu.br
Protocolo
HTTP
HTTP/1.1 200 OK
Navegador
Content-type: text/html
Web
Server
Ferramenta de desenv. do navegador
 HTTP – Hypertext Transfer Protocol
 Utilizado para transferir documentos (hipertexto)
de servidores remotos

 Protocolo de camada de aplicação


 Cliente – Servidor
Protocolo
 A troca de mensagens e cabeçalhos se dá em texto
HTTP puro
 Versões:
 HTTP 1.1 – 1997 – RFC 9112 (Jun/2022)
 HTTP 2.0 – 2015 – RFC 9113 (Jun/2022)
 HTTP 3.0 – 2018 – RFC 9114 (Jun/2022)
 Sintaxe:
MÉTODO URI do alvo HTTP/Versão
Campo de Cabeçalho: Valor
...
Campo de Cabeçalho: Valor
Linha em branco
Requisição
[ dados ]
HTTP  Dependendo do método HTTP, os dados podem ou
não serem necessários
 Ex:
GET / HTTP/1.1
Host: www.google.com
User-Agent: Mozinlla/5.0
Accept: text/html, image/*, *.*
 Sintaxe:
HTTP/Versão Código Mensagem
Campo de Cabeçalho: Valor
...
Campo de Cabeçalho: Valor
Linha em branco
dados
Resposta  Os dados podem ser texto ou binário (Ex: imagem,
HTTP vídeo, etc)
 Ex:
HTTP/1.1 200 OK
Date: Fri, 21 oct 2022 14:57:17
Server: Apache
Content-Length: 3029
Content-type: text/html

<HTML> … </HTML>
Ferramenta de desenvolvimento
 Utilizado para solicitar uma URI específica
GET /index.html HTTP/1.1
Host: www.meusite.com
Método GET Linha em branco
Teste com
telnet
 Utilizado para solicitar uma parte do conteúdo
 O servidor precisa dar suporte através da
funcionalidade "Accept-Ranges"
 Pode ser verificado no cabeçalho de resposta

 Verificando o cabeçalho do servidor com o


comando curl:
Partial GET
 Para adicionar informações de cabeçaho no curl,
utilize a opção --header:

Partial GET
 Utilizado para enviar dados para uma URI
específica. Ou seja, é o método mais utilizado para
o envio de dados por formulários HTML
POST /login HTTP/1.1
Host: www.meusite.com

Método Content-Type: application/x-


www-form-urlencoded
POST Content-Length: 28
Linha em branco
user=admin&password=senha123
 Utilizando o framework Flask para testar o POST
 Baixe o arquivo compactado em:
 Usando o comando wget
 http://seattle.ifrn.edu.br/pf.tar.gz
 Desconpacte com o comando:
 tar –xzvf pf.tar.gz
Exemplo de  Instalar o pip:
 apt update
POST com  apt install python3-pip
script Python  Rode o comando para instalação do flask no python
 python3 –m pip install flask
 Na pasta aonde localizam-se o script python, rode o
servidor de desenvolviento do Flask
 python3 –m flask --app python_flask run –h 0.0.0.0
 Teste o acesso em:
 http://<IP da sua VM>:5000
Captura de
Método
POST com
Wireshark
 Os códigos de status são importantes para
entender a resposta do Servidor Web
 Para desenvolvedores, é importante para
desenvolver sistemas Web que retornam as
respostas corretas definidas pelo Protocolo HTTP
HTTP Status  Códigos:
 100-199 – Informacional
 200-299 – Sucesso
 300-399 – Redirecionamento
 400-499 – Erro do cliente
 500-599 – Erro do servidor
 Indica que o cliente deve adicionalmente executar
novos passos para ter acesso ao recurso
 301 – Moved permanently
 304 – Not modified

300
 Indica que o cliente deve ter enviado algum request
com erro
 401 – Un-authorized
 403 – Forbidden
 404 – Page not found
400
 Indica que houve um erro no servidor web
500  500 – Internal server error
 Servidor Web com capacidade de:
 Proxy reverso
 Caching
Servidor Web  Load balance

Nginx  SSL Negotiation

 Duas versões:
 Nginx Open Source
 Nginx Plus – Através de licença de uso
Arquitetura
 Para Ubuntu Server:
joao@ubuntu:~/$ sudo apt update
joao@ubuntu:~/$ sudo apt install nginx
joao@ubuntu:~/$ systemctl status nginx

Instalação
 Os arquivos de configuração são localizados no
diretório /etc/nginx
 /etc/nginx/nginx.conf
 /etc/nginx/conf.d/*
 /etc/nginx/sites-available/*
/etc/nginx/sitex-enabled/*
Arquivos de 

 O arquivo de configuração principal (nginx.conf) lê


configuração os arquivos incluídos nas pastas "conf.d" e "sites-
enabled"
 É comum criar arquivo de configuração para cada
novo site em "sites-available" e para que o nginx
leia essa configuração, criar um link na pasta "sites-
enabled" apontando para esse arquivo criado.
 Uma forma de adicionar vários sites no mesmo
servidor é usando o conceito de VirtualHost
 Usa a informação da variável "Host", contida no
cabeçalho HTTP no request
 Para cada novo site, crie um arquivo de
configuração em sites-available, e crie um link para
o mesmo em sites-enabled
 O arquivo default (já existente) serve para qualquer
Configuração requisição apontando para o IP da máquina, que
não tenha uma configuração específica que use um
de sites Host específico na URL
 Ao digitar a URL no navegador, o nome do host
utilizado é traduzido para o IP do servidor e a parte
do Host da URL é incluída no cabeçalho da
requisição
 Portanto, para cada novo site que responde por um
nome específico, no DNS deve ser criado uma
entrada "A" ou "CNAME" com o nome do Host que
deve apontar para o IP do servidor Web
 /etc/nginx/sites-available/www.exemplo.com:
server {
listen 80; Entrada DNS

server_name www.exemplo.com; Pasta do site

root /var/www/html/exemplo;
Configuração index index.html;

de sites access_log /var/log/nginx/exemplo_access.log;


error_log /var/log/nginx/exexmplo_error.log;

location / {
try_files $uri $uri/ =404;
}
}
 Usando um gerador de site estático com o
framework "Hugo".
 No seu home de usuário baixe o cliente do hugo:
 https://github.com/gohugoio/hugo/releases/downlo
ad/v0.119.0/hugo_0.119.0_Linux-64bit.tar.gz
 Descompacte e copie o binário hugo para a pasta
~/.local/bin/
Exercício  cd ~
 tar –xzvf hugo_0.105.0_linux-
amd64.tar.gz
 mv hugo ~/.local/bin/
 Criar um novo site no seu home
 cd ~/
 hugo new site meublog
 Usando um gerador de site estático com o
framework "Hugo".
 Instalação de Tema
 cd meublog
 git init
 git submodule add
https://github.com/theNewDynamic/gohugo-theme-
ananke.git themes/ananke
 echo theme = \"ananke\" >> config.toml
 Criar um post
Exercício  hugo new posts/meu-primeiro-post.md
 Editar o arquivo criado em: content/posts/meu-
primeiro-post.md
 Mudar o valor de Draft para "false"
 Acresecentar conteúdo após a ultima linha tracejada
 Compilação do site
 hugo –D
 Copiar o conteúdo da pasta meublog/public para o
servidor Web do nginx em /var/www/html

Você também pode gostar