2013-08-15 1 views
0

mod_proxy를 사용하여 Apache를 구성하여 Dart 웹 응용 프로그램을 로컬로 개발하려고하는데 올바르게 설정하지 못했습니다. 내을 httpd.conf에서 다트와의 도메인 간 호출을 피하기 위해 Apache를 설정하십시오.

나는 다음과 같은 라인을 설정 한 : 아파치 - vhosts.conf에서

LoadModule proxy_module modules/mod_proxy.so 
LoadModule proxy_http_module modules/mod_proxy_http.so 
Include conf/extra/httpd-vhosts.conf 

내가 필요한 것을 설정하는 시도를했지만, 제대로 동작하지 않습니다. Jetty와 Eclipse에서 실행중인 봄용 웹 응용 프로그램이 있습니다. 그래서 그것이 http://localhost:8080 위에있다. 그런 다음 다트 편집기에서 다트를 실행하면 127.0.0.1:3030이됩니다 (비록 "로그인"과 같은 요청의 전체 경로가 : http://127.0.0.1:3030/C:/Users/CorayThan/dart/BlightedRealmUi/web/out/login).

어느 쪽이든, 내 요청을 127.0.0.13030에서 localhost : 8080으로 리디렉션하도록 Apache를 얻으려고합니다. 나는 httpd-vhosts.conf에서 이와 같이하려고 시도했다.

<VirtualHost *:80> 
    ServerAdmin [email protected] 
    ServerName 127.0.0.1:3030 

    ProxyPass/http://localhost:8080 
    ProxyPassReverse/http://localhost:8080 

    ErrorLog "logs/proxy-error.log" 
</VirtualHost> 

그러나 전혀 작동하지 않는 것 같다. 누구나 내가 그것을 고칠 수있는 방법을 제안하거나, 이것을 처음부터 더 잘 수행 할 것을 제안 할 수 있습니까? (CORS 나 Jsonp을 사용하고 싶지 않다. 브라우저 간 호환이 가능한 개발 용 해킹이 필요하다.)

답변

1

내가 할 수 있을지 모르겠지만, VHost는 3030을 듣지 않아야한다. 80 Dart가이 포트를 사용하는 것처럼 할 수없는 프록시 기능을 수행하기 위해 위에서 설명한대로, Dartium에서 CouchDb 서버로 프록시하는 데 사용하는 Vhost 파일의 추출물은 다음을 사용하여 브라우저 기반 couchdb 클라이언트 액세스를 허용합니다. CORS, 이것은 당신이 비록 원하는 것을하지 않을 수 있습니다 : -이

<VirtualHost *:8080> 
    <Proxy http://141.196.22.210:5984> 
     Order deny,allow 
     Allow from all 
    </Proxy> 
    RewriteEngine on 
    RewriteCond %{REQUEST_METHOD} ^OPTIONS 
    Header set Access-Control-Allow-Origin http://127.0.0.1:3030 
    Header set Access-Control-Allow-Credentials true 
    Header set Access-Control-Allow-Headers Content-Type 
    Header merge Access-Control-Allow-Headers Authorization 
    Header merge Access-Control-Allow-Headers Destination 
    Header set Access-Control-Allow-Methods GET 
    Header merge Access-Control-Allow-Methods POST 
    Header merge Access-Control-Allow-Methods PUT 
    Header merge Access-Control-Allow-Methods OPTIONS 
    Header merge Access-Control-Allow-Methods DELETE 
    Header merge Access-Control-Allow-Methods HEAD 
    Header merge Access-Control-Allow-Methods COPY 
    Header set Access-Control-Max-Age 3600 

    ProxyRequests off 
    ProxyPreserveHost Off 
    KeepAlive Off 

    ProxyPass/http://141.196.22.210:5984/ nocanon 
    ProxyPassReverse/http://141.196.22.210:5984/ 
</VirtualHost> 

그래서, 소파에 내 클라이언트 응용 프로그램 로그가 141.196.22.210:8080를 사용하는 경우.

+0

은 '허용 그것도 할 수 있다고 생각하지 않습니다. – CorayThan

1

나는 동일한 문제가 있었는데 나는 Tomcat과 다트 응용 프로그램을위한 프록시를 사용하여 가상 호스트를 작성하여 해결했습니다. 당신이 당신의 다트 응용 프로그램의 전체 경로와 응용 프로그램에 액세스하는 것 "Dartium에서 실행"일반적으로

NameVirtualHost *:80 
<VirtualHost *:80> 
    ServerName dartapp 

    <Location "/tomcat-application-context/"> 
     ProxyPass "http://localhost:8080/tomcat-application-context/" 
     ProxyPassReverse "http://localhost:8080/tomcat-application-context/" 
    </Location> 
    <Location "/dart/"> 
     ProxyPass "http://127.0.0.1:3030/" 
     ProxyPassReverse "http://127.0.0.1:3030" 
    </location> 
</VirtualHost> 

: 대략, 여기 내 가상 호스트입니다 대신

http://127.0.0.1:3030/full/path/to/web/app.html 

, 아파치에 액세스 (즉, /dart/full/path/to/web/app.html) 프록시 위치로 시작하여 /full/path/to/web/app.html와 가상 호스트 : 나는 돈 때문에

http://dartapp:80/dart/full/path/to/web/app.html 
관련 문제