Amazon EC2 인스턴스 OS를 사용하고 있습니다: ubuntu 14.04
먼저 odoo 서버를 사용하여 웹사이트를 디자인합니다. 이는 액세스하여 수행됩니다.http://example.com:8069
그런 다음 Vesta 패널을 설치하고 내 도메인에 대한 메일 계정을 만들었습니다. 이 계정은 roundcube이며 다음을 통해 액세스할 수 있습니다.http://example.com/webmail
odoo에서 웹사이트를 개발한 후 rc.local에 규칙을 추가했습니다: iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-port 8069
내 메인 도메인에서 odoo 웹사이트에 접속할 수 있지만, 그 이후부터 해당 URL로 이동하면 odoo 404 페이지가 전송되고 웹메일에 접속할 수 없습니다.
작업하려면 odoo와 웹메일이 필요하며 도움을 주시면 대단히 감사하겠습니다.
답변1
문제는 roundcube가 포트 80에 바인딩된다는 것입니다. iptables를 사용하여 모든 포트 80 트래픽을 oodo로 리디렉션하기 전까지는 잘 작동합니다. 이렇게 하면 oodo 트래픽이 제대로 작동하지만 roundcube용 트래픽도 iptables에 의해 캡처되어 oodo로 전송됩니다(따라서 roundcube에 액세스하려고 하면 oodo 404 페이지가 표시됩니다).
대부분의 Linux 시스템과 마찬가지로 이 문제를 해결하는 방법은 여러 가지가 있지만 요청을 처리하기 위해 역방향 프록시를 설정하는 것이 좋습니다. 프록시는 동일한 서버에서 실행될 수 있으며 포트 80으로 들어오는 요청을 처리할 수 있습니다. 요청을 분석하고 필요에 따라 roundcube 또는 oodo에 전달합니다.
아마도 Nginx를 프록시로 사용하고 다음과 같이 할 것입니다.
- roundcube를 포트 8000(또는 아직 사용하지 않는 다른 높은 포트)에 바인딩합니다. 이는 프록시 서버를 위해 포트 80을 확보해야 하기 때문입니다.
- Nginx를 설치하고 포트 80에 바인딩된 역방향 프록시로 구성합니다. 외관에 대한 일부 정보는 다음과 같습니다.http://nginx.com/resources/admin-guide/reverse-proxy/
- Nginx 구성에는 /webmail에 대한 모든 요청을 캡처하고 이를 localhost:8000(roundcube 설치)으로 프록시하는 위치 블록이 있습니다.
- 다른 모든 요청은 localhost:8069(oodo 설치)로 프록시 전달됩니다.
어떤 프록시를 사용하는지는 귀하가 선호하는 것에 따라 달라집니다. 저는 Nginx를 사용할 가능성이 높지만 Squid, Apache 또는 기타 여러 도구도 사용할 수 있습니다. 웹 서버로 기본적으로 roundcube가 사용하는 것이 무엇인지는 모르지만 다른 것을 설치하지 않고도 oodo 요청을 프록시하는 데 사용할 수 있습니다.
이것이 적어도 당신이 올바른 방향으로 갈 수 있기를 바랍니다.