Port Forward - Multiplas URLS
-
Com essas configuraçoes acima, o usuario externo digita http://omsteste.dyndns-remote.com e http://omsteste1.dyndns-remote.com e abre a mesma pagina. Eu queria que ela abrisse, de acordo com a relação dos meus servidores internos, mas pelo que vejo, o NAT pega semprea primeira regra.
-
se voce conseguiu ver a mesma página quer dizer que voce já conseguiu:
-
desativar o nat
-
desativar o http redirect da gui do pfsense
-
criar a regra na wan que libera acesso a porta 80
-
criar os backends.
Muito bom.
O proximo passo é definir que paginas cada backend responde.
Vi nas suas telas que voce configurou a probe url.A probe url define que parte do site o varnish vai testar para saber se o servidor esta no ar ou não.
precisar ser uma url completa e não o mapeamento do site:
ex: http://www.meusite.com.br/index.phpconfigura agora o backend mappings
sua configuracao pode ficar assim:
host equal omsteste1.dyndns-remote.com para um backend e
host equal omsteste.dyndns-remote.com para o segundo backendNa nomeclatura do varnish, backend significa servidor web.
Uma cofiguracao mais avançada é criar o backends sem nenhum mapeamento e atribuir os sites na aba load balancer.att,
Marcello Coutinho -
-
Marcelo,
Mais uma vez obrigado pela atenção. Estarei efetuando os testes e te retorno com o feedback. Sua atenção foi de grande valia.
Abraços
-
Marcelo,
Segui todas as dicas que me passou, mas não funciona..nao sei o que estou fazendo de errado. Agora nao abre a pagina. Só esta brindo quando coloco NAT.
Segue o print das telas.
abcs
-
Posta o arquivo de configuracao(aba view configuration)
-
Varnish configuration file
Automatically generated by the pfSense package system
This file is located in /var/etc/default.vcl
sub vcl_error {
if (obj.status == 503 && req.restarts < 1) {
restart;
}set obj.http.Content-Type = "text/html; charset=utf-8";
synthetic {"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"><title>"} obj.status " " obj.response {"</title>
We are very sorry but an error occurred during this request.
Please press refresh in your browser to try again.
Varnish Error "} obj.status " " obj.response {"
"} obj.response {"
Guru Meditation:
XID: "} req.xid {"
"};
return(deliver);}
backend omstesteBACKEND {
used in catch_all
.host = "192.168.2.5";
.port = "80";
.first_byte_timeout = 300s;
.connect_timeout = 25s;
.probe = {
.url = "http://omsteste.dyndns-remote.com/testando.htm";
.interval = 1s;
.timeout = 1s;
.window = 5;
.threshold = 5;
}
}backend omsteste1BACKEND {
used in catch_all
.host = "192.168.2.6";
.port = "80";
.first_byte_timeout = 300s;
.connect_timeout = 25s;
.probe = {
.url = "http://omsteste1.dyndns-remote.com/index.htm";
.interval = 1s;
.timeout = 1s;
.window = 5;
.threshold = 5;
}
}sub vcl_recv {
#BASIC VCL RULES SETTING
#set X-forward
set req.http.X-Forwarded-For = client.ip;if (req.http.host == "omsteste.dyndns-remote.com") {
set req.backend = omstesteBACKEND;
}
else if (req.http.host == "omsteste1.dyndns-remote.com") {
set req.backend = omsteste1BACKEND;
}#respect client wish to refresh the page
if (req.http.Pragma ~ "no-cache")
{
return(pass);
}#BASIC VCL RULES ACTIONS
#Disable session cache
if (req.http.Cookie && req.http.Cookie ~ "(PHPSESSID|phpsessid)") {
return(pass);
}
if (req.http.Cookie && req.http.Cookie ~ "(JSESSION|jsession)") {
return(pass);
}
if (req.http.X-Requested-With == "XMLHttpRequest" || req.url ~ "nocache") {
return(pass);
}
#Enable static cache
if (req.request=="GET" && req.url ~ ".(css|js|txt|zip|pdf|rtf|flv|swf|html|htm)$") {
unset req.http.cookie;
return(lookup);
}
if (req.request=="GET" && req.url ~ ".(gif|jpg|jpeg|bmp|png|ico|img|tga|wmf|mp3|ogg)$") {
unset req.http.cookie;
return(lookup);
}
if (req.request != "GET" && req.request != "HEAD") {return(pipe);}return(lookup);
}sub vcl_pipe {
If we don't set the Connection: close header, any following
requests from the client will also be piped through and
left untouched by varnish. We don't want that.
set req.http.connection = "close";
Note: no "pipe" action here - we'll fall back to the default
pipe method so that when any changes are made there, we
still inherit them.
}
sub vcl_fetch {
#Disable cache when backend is starting a session
if (beresp.http.Set-Cookie && beresp.http.Set-Cookie ~ "(PHPSESSID|phpsessid)") {
return(pass);
}
if (beresp.http.Set-Cookie && beresp.http.Set-Cookie ~ "(JSESSION|jsession)") {
return(pass);
}
if (beresp.http.X-Requested-With == "XMLHttpRequest" || req.url ~ "nocache") {
return(pass);
}Varnish respects the wishes of the backend application.
if (beresp.http.Pragma ~ "no-cache" || beresp.http.Cache-Control ~ "(no-cache|no-store|private)") {
return(pass);
}
## If the request to the backend returns a code other than 200, restart the loop
## If the number of restarts reaches the value of the parameter max_restarts,
## the request will be error'ed. max_restarts defaults to 4. This prevents
## an eternal loop in the event that, e.g., the object does not exist at all.
if (beresp.status != 200 && beresp.status != 403 && beresp.status != 404 &&
beresp.status != 303 && beresp.status != 302 && beresp.status != 301) {
restart;
}return(deliver);
}sub vcl_deliver {
##set resp.http.X-Served-By = server.hostname;
if (obj.hits > 0) {
set resp.http.X-Cache = "HIT";
set resp.http.X-Cache-Hits = obj.hits;
} else {
set resp.http.X-Cache = "MISS";
}
return(deliver);
} -
Marcelo,
Voce tem skype ou msn?
O meu msn é vromero_rj@hotmail.com e victor-romero1
-
Percebi um bug na probe url quando o site tem caracteres especiais '-', tenta mudar somente para
/index.htm e vê se funciona.o probe deve ficar assim:
.probe = {
.url = "/index.htm";
.interval = 1s;Se o probe der errado, voce vai receber a tela de erro 503 do varnish.
-
Fala Marcelo,
Não foi nao. Só consigo abrir a url externamente, quando habilito o NAT forward. Fora isso a pagina nao abre? Voce chegou a verificar a regra que criei de WAN?Voce havia me dito que não posso deixar nenhuma regra de NAT forward habilitada. Mas como vou conseguir fazer a acesso externo na porta 80? Pela regra normal em firewall- rules- wan eu consigo?
abcs
-
vai na console e vê se o varnish tá rodando
ps ax | grep -i varnish
-
você habilitou o varnish na porta 80 na aba 'settings'
-
Fala Marcelo,
Cara consegui. O serviço do Varnish, nao tava subindo. Olhei o log e fiz o seguinte:
Em settings, alterei Storage Type de memory para disk.
Depois coloquei Cache storage size in megabytes para 9046. O Serviço do Vanish subiu. Olha que beleza!!!
Muito obrigado cara pelas informações. Forte abraço
-
Excelente! 8)
Depois volta ele para cache em memória e testa a diferença de performance.
Parabéns pela configuração.
-
Fala Marcelo.
Ta show de bola cara. Fiz o Varnish funcionar direito. Meus servidores estao em cluster tambem. Agora to querendo publicar um endereço na porta https. Ex: https://omsteste.dyndns-remote.com . No meu IIS configurei a porta TCP 80 e a porta SSL 443. Internamente funciona. Externamente não. Gostaria de saber se o Varnish faz isso tambem. Um aoutra dúvida é a seguinte. Eu consigo digitar por exemplo, http://omsteste.dyndns-remote.com no meu browser e fazer um redirecionamento automatico para https://omsteste.dyndns-remote.com ? Se não meu engano você me disse que o HAPROXY faz isso certo?
abraços
-
Olá vromero.rj,
É gratificante ver a evolução das configurações do pfsense aqui na lista.
Agora vamos aos pontos:
@vromero.rj:Agora to querendo publicar um endereço na porta https.
Se for só em um dos sites, pode usar o nat mesmo, caso contrário você vai precisar do Haproxy para fazer isso.
Outra solução seria o apache+modsecurity, mas nesse caso você teria que colocar os certificados ssl no firewall também.
Fazendo uma escala de complexidade/funcionalidade, ficaria assim:-
NAT (mais facil porem restrito a um host)
-
HAPROXY (intermediario)
-
apache+mod_security(dificil porem mais seguro)
Eu consigo digitar por exemplo, http://omsteste.dyndns-remote.com no meu browser e fazer um redirecionamento automatico para https://omsteste.dyndns-remote.com ?
O redirect é feito na programação da página, voce verifica o protocolo que o cliente chamou e se for o caso,faz um redirect para a mesma página com https
att,
Marcello Coutinho -
-
Opa…Estamos todos evoluindo. Sua ajuda tem sido de grande valia para todos nós.Sempre usei o ISA SERVER. Mas ele tem me desapontado, principalmente no quesito performance. Na verdade, segmentei minha rede toda. Estou usando o PfSense com cluster para publicar serviços web e usando o Endian Firewall para serviço de proxy, visto que considero ele o melhor nesse sentido. Ele faz autenticação NTLM.
Estou efetuando os testes que me falou. Vou instalar o hpaproxy!!abcsss -
usando o Endian Firewall para serviço de proxy, visto que considero ele o melhor nesse sentido. Ele faz autenticação NTLM.
Nao considero instalar o samba no firewall uma boa solução, mas enfim. Se Voce quiser o squid do pfsense autenticando NTLM, basta instalar o winbind, o samba e colocar o pf no domínio.
-
Marcelo,
Usei o NAT mesmo. Como só tenho esse endereço na porta https, não terei problema.
Eu consigo fazer aquele redirect pelo NAT na porta 80 pra 443?
abraçosss
-
Infelizmente nao, so via programação mesmo.
Usa JavaScript. O google Te ajuda.
-
Humm.. tranquilo meu camarada.
Mas ja foi uma ajuda e tanto.
Forte abraço