httpd-modules-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Joe Lewis <...@joe-lewis.com>
Subject Re: [Module Dev] Sending http request
Date Tue, 22 Jan 2008 19:00:32 GMT
karim Bendadda wrote:
> Thanks Joe for answer...
>
>    I'm sure it's not a proxy problem; I'm using "wireshark" to look at HTTP
> & TCP requests and my Apache doesn't send anything... And there is nothing
> on the error_log file...
>
> It's strange that sending requests ton an URL are not expected on Apache...
>   

I almost forgot.  Try setting the r->proxyreq to PROXYREQ_PROXY or 
PROXYREQ_REVERSE, and see if that does anything (before returning 1).

(I had to look at the mod_rewrite.c file as that is what I am using as 
an example.)

Joe

>
>
> On Jan 22, 2008 7:25 PM, Joe Lewis <joe@joe-lewis.com> wrote:
>
>   
>> karim Bendadda wrote:
>>     
>>> First I'd like to thank you very much Joe for help...
>>>
>>> I have a "begineer" question:
>>>
>>> *3) allow apache to handle the rest of the request*. Is that mean return
>>> 1???? because when I tried this I had an error...and when I tried return
>>>       
>> OK
>>     
>>> I had nothing...
>>>
>>>       
>> (I don't remember if I responded, so I am responding [again if I already
>> did]).
>>
>> Check your http proxy settings.  You need to have it configured.  Check
>> your apache error_log for errors.
>>
>> Joe
>>
>>     
>>> that's my code:
>>>
>>> *static int my_module_handler (request_rec *r) {
>>>  char *url = apr_pstrdup(r->pool,"http:\\10.12.23.5\irj\test");
>>>     r->filename = apr_pstrcat(r->pool, "proxy:", url, NULL);
>>>     return 1;
>>> }
>>>
>>> static void **my_module**_hooks(apr_pool_t *pool){
>>>     ap_hook_handler(**my_module**_handler, NULL, NULL, APR_HOOK_FIRST);
>>>    }
>>>
>>> module AP_MODULE_DECLARE_DATA **my_module**_module = {
>>>     STANDARD20_MODULE_STUFF,
>>>     NULL,
>>>     NULL,
>>>     auth_chorus_config,
>>>     NULL,
>>>     **my_module**_cmds,
>>>     **my_module**_hooks
>>> };*
>>>
>>> Thanks
>>>
>>>
>>> On Jan 17, 2008 4:01 PM, Joe Lewis < joe@joe-lewis.com> wrote:
>>>
>>>
>>>       
>>>> karim Bendadda wrote:
>>>>
>>>>         
>>>>> Hi All;
>>>>>
>>>>> I tried this
>>>>>
>>>>> *request_rec *subr = ap_sub_req_lookup_uri(url, r, NULL);
>>>>> apr_table_set( subr->headers_out, "Location", url );
>>>>> ap_log_rerror( APLOG_MARK, APLOG_ERR, 0,r, "sub request status:
>>>>> %i",subr->status );
>>>>> ap_run_sub_req(subr);*
>>>>>
>>>>> I have the following error:
>>>>>
>>>>> *[Thu Jan 17 07:11:25 2008] [error] [client 10.75.197.168 ] File does
>>>>>
>>>>>           
>>>> not
>>>>
>>>>         
>>>>> exist: /usr/local/apache2/htdocs/my_module*
>>>>>
>>>>> I think because the external server is not on the same site..I read
>>>>>           
>> the
>>     
>>>>> paragraph 6.3 Diverting a Request: The internal redirect ...I think
>>>>>
>>>>>           
>>>> there is
>>>>
>>>>         
>>>>> no external redirect for http requests...
>>>>> Any suggestion please??
>>>>>
>>>>>
>>>>>           
>>>> That error and assumption are correct.  As Ray stated, the
>>>> ap_sub_req_lookup_uri only works if the URI is on the local server's
>>>> apache.  (It is a URI vs. URL concept - the URI does not include the
>>>> http://servername piece of the URL.)
>>>>
>>>> Instead, try a simple :
>>>>
>>>> r->filename = apr_pstrcat(r->pool, "proxy:", url, NULL);
>>>> return 1;
>>>>
>>>> (this example was stolen from mod_rewrite, which was the only core
>>>> module that I was aware of that included a "send to proxy" command).
>>>> Just set the URL to what the client would have been grabbing if it was
>>>> redirected to the right page.  For example, if the client is trying to
>>>> get the page http://corvette.sharktooth.org/status.html , the resulting
>>>> line would be :
>>>>
>>>> url = apr_pstrdup(r->pool,"http://corvette.sharktooth.org/status.html
>>>>         
>> ");
>>     
>>>> r->filename = apr_pstrcat(r->pool, "proxy:", url, NULL);
>>>> return 1;
>>>>
>>>> (this could also be shortened - what the three lines do are 1) get/set
>>>> the URL, which should be set in your case already, 2) preface the URL
>>>> with "proxy:", which is an indicator to proxy the request elsewhere,
>>>>         
>> and
>>     
>>>> 3) allow apache to handle the rest of the request).
>>>>
>>>> Try it and let us know if that works for you.
>>>>
>>>> Joe
>>>> --
>>>> Joseph Lewis <http://sharktooth.org/ >
>>>> "Divide the fire, and you will sooner put it out." - Publius Syrus
>>>>
>>>>
>>>>         
>>>
>>>
>>>       
>> --
>> Joseph Lewis <http://sharktooth.org/>
>> "Divide the fire, and you will sooner put it out." - Publius Syrus
>>
>>     
>
>
>
>   


-- 
Joseph Lewis <http://sharktooth.org/>
"Divide the fire, and you will sooner put it out." - Publius Syrus

Mime
View raw message