
sub1.dom1.com
고정 IP가 (가상 IP) 인 DDNS 하위 도메인이 있습니다 99.88.77.66.55
.
동일한 IP(역시 가상)를 가리키는 dom2.com
DNS CNAME 항목을 사용하여 오프사이트에서 호스팅되는 도메인이 있습니다 .sub2.dom2.com
sub3.dom2.com
99.88.77.66.55
에서는 99.88.77.66.55
방화벽 뒤에 LAN이 있습니다. 이 LAN에는 세 개의 서버가 있습니다.
www.local.lan
로컬 FQDN이 다음 인 웹 서버192.168.1.3:80
app.local.lan
로컬 FDQN이 있는 애플리케이션 서버192.168.1.4:8069
fs.local.lan
로컬 FQDN이 다음 인 파일 서버192.168.1.5:2430
자세한 내용은 아래 다이어그램을 참조하세요. 세 서버 모두 동일한 freeBSD(freeNAS) 시스템의 감옥 내에서 가상 서버로 실행되고 있습니다.
내가 이루고 싶은 것
위 다이어그램에 따라 위에서 언급한 시스템의 감옥 내에서 실행할 역방향 프록시 서버를 추가하고 싶습니다. WAN의 요청은 HTTP 헤더에 제공된 호스트 이름을 기반으로 적절한 서버로 전달되어야 합니다.
고려사항
- 표준 포트 전달:현재 저는 LAN 라우터의 간단한 포트 전달을 통해 이러한 서버에 액세스합니다. 이는 일반적으로 수용 가능한 솔루션이지만 원격으로 네트워크에 문제가 발생하는 경우 WAN-LAN 포트 관계를 직선적으로 유지하는 것이 어려워집니다. 또한, 이 서버에 액세스해야 하는 나 이외의 사용자의 경우 포트 번호를 기억하지 않아도 되므로 더 쉽습니다.
- DD-WRT 신청:내 라우터는 4GiB USB 드라이브가 장착된 DD-WRT 펌웨어를 실행하고 있으므로 Pound 또는 이와 유사한 것을 사용하여 라우터에 역방향 프록시 서버를 설치하고 실행하는 방법을 조사했습니다. 나는 이에 대한 방법을 찾기 위해 광범위한 웹 검색을 수행했습니다. 제가 직면한 문제는 대부분의 가이드나 튜토리얼이 오래되었고 필요한 리소스에 대한 끊어진 링크가 포함되어 있다는 것입니다.
- 아파치/Nginx:이 두 가지 중 하나가 실행 가능한 솔루션처럼 보입니다. 그러나 제가 조사한 DD-WRT 솔루션과 마찬가지로 많은 가이드에서는 끊어진 링크를 제공하거나 필요한 리소스에 대한 링크를 전혀 제공하지 않습니다. Apache 또는 Nginx 옵션과 관련하여 나 앞에 있는 또 다른 장애물은 대부분의 가이드와 튜토리얼에서 내가 Apache 또는 Nginx에 대해 알아야 할 모든 것을 이미 알고 있다고 가정한다는 것입니다. 저는 두 플랫폼 모두에 대한 사전 경험 없이 시작하고 있으며 일이 제대로 작동하도록 배우고 실험할 의향이 있습니다. 가이드와 튜토리얼은 대부분
server
필요한 코드 섹션만 보여줍니다. 또한 필요한 종속성과 이를 구현하는 방법을 이미 알고 있다고 가정합니다.
이미 취한 단계
엔진엑스: 내 nginx.conf 파일의 샘플입니다. 그것은 단지 일부일 뿐입니다. server
관련 세부 정보가 변경된 다른 서버에 대한 다른 섹션이 있습니다 .
#nginx.conf
events {
worker_connections 1024;
}
http {
server {
listen 80;
server_name sub1.dom1.com #I've also tried www.lan.lan, here.
access_log off;
error_log off;
location / {
proxy_pass http://192.168.1.3:80/;
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_ass_x_forwarded_for;
proxy_max_temp_file_size 0;
client_max_body_size 10m;
client_body_buffer_size 128k;
proxy_connect_timeout 90;
proxy_send_timeout 90;
proxy_ready_timeout 90;
proxy_buffer_size 4k;
proxy_buffers 4 32k;
proxy_busy_buffers_size 64k;
proxy_temp_file_write_size 64k;
}
}
}
그러나 이것은; 연결을 시도할 때 502 - 잘못된 게이트웨이 오류가 반환됩니다.
아파치: Apache22로 이것을 시도했다는 점에 유의하는 것이 중요합니다. 내 최신 httpd.conf 파일은 다음과 같습니다.
LoadFile /usr/local/bin/libxml2.so
LoadModule proxy_html_module libexec/apache22/mod_proxy_html.so
LoadModule xml2enc_module libexec/apache22/mod_xl2enc.so
<VirtualHost *:80>
ServerName sub1.dom1.com
ServerAlias sub1.dom.com
ProxyPass / http://192.168.1.3:80/
ProxyPassReverse / http://192.168.1.3:80
</VirtualHost>
<VirtualHost *:80>
ServerName sub2.dom2.com
ServerAlias sub2.dom2.com
ProxyPass / http://192.168.1.4:8069/
ProxyPassReverse / http://192.168.1.4:8069
</VirtualHost>
<VirtualHost *:80>
ServerName sub3.dom2.com
ServerAlias sub3.dom2.com
ProxyPass / http://192.168.1.5:2430/
ProxyPass / http://192.168.1.5:2430
</VirtualHost
Apache22를 시작하려고 할 때 다음을 사용합니다.
service apache22 start
나는 다음을 얻습니다 :
Invalid command 'ProxyPass', perhaps misspelled or defined by a module not included in the server configuration
mod_proxy
많은 연구 끝에 나는 이것이 로드된 많은 필수 모듈 중 하나인 모듈만 로드했기 때문에 발생했을 가능성이 높다는 것을 알고 있습니다 mod_proxy_html
. 그 이유는 광범위한 검색 후에 이 특정 모듈에 대한 작업 링크만 찾을 수 있었기 때문입니다.
파운드: DD-WRT에 ipkg를 설치하려고 할 때 문제가 발생했습니다. 이는 내 특정 라우터의 atheos 아키텍처 때문일 수 있습니다. 나는 또한 이전에 언급한 것처럼 깨진 링크를 많이 만났습니다.
자, 장황한 설명은 생략하고 제가 커뮤니티에서 찾고 있는 내용은 다음과 같습니다.
nginx.conf
Nginx를 사용하여 가장 근접한 작업을 수행한 경우 수행하려는 작업을 수행하도록 파일을 올바르게 설정하려면 어떻게 해야 합니까 ? 502 오류의 원인은 무엇이며 어떻게 해결합니까?
답변1
nginx 솔루션의 경우:
server_name
항상 요청된 호스트 이름이어야 합니다(http 헤더에서).
*
모든 도메인/호스트에서 콘텐츠를 사용할 수 있도록 여기에 넣을 수 있습니다 .
proxy_pass
특별히 필요한 경우를 제외하고는 으로 끝나서는 안 됩니다 /
.
502 Bad gateway
나는 nginx가 upsteam( )에 연결할 수 없는 경우를 가장 흔히 보았습니다 proxy_pass
.
- DMZ->LAN에 대한 방화벽 정책을 확인하셨나요?
error.log
힌트 는 확인하셨나요 ?