The current latest on git is still "experimental".
I have made a bunch of fixes which James Peach is helping me to verify.
The conversation can be found here -
https://issues.apache.org/jira/browse/TS-1249

If you really want to try, you can try to compile the forked version I have.
https://github.com/shukitchan/trafficserver/tree/master/plugins/experimental/esi
and i hope it should work for you.

It is at least working quite well for me.

Thanks.

Kit


On Fri, Aug 17, 2012 at 12:42 PM, Andrew Ho <[email protected]> wrote:
> Hi Traffic Server users,
>
> I can't seem to get ESIs working on Traffic Server. When I request an ESI
> enabled page, I get a 200 OK status, but "Content-Length: 0" and an empty
> entity body. There is no evidence on the origin server side that the ESI
> sub-pages were ever loaded. Does this symptom sound familiar to anybody?
>
> The gory details follow...
>
> I am using Traffic Server version 3.2.0 (Linux distribution is CentOS 5.4,
> and the test hosts are in Amazon EC2):
>
> % traffic_server --version
> [TrafficServer] using root directory '/usr/local'
> Apache Traffic Server - traffic_server - 3.2.0 - (build # 7719 on Aug  7
> 2012 at 19:06:21)
>
> The ESI plugin I built was from commit 025cd279 of repository version:
> https://git-wip-us.apache.org/repos/asf/trafficserver.git/
>
> The following are the configuration changes I enacted to the defaults. In
> plugin.config, I added this line to enable the ESI plugin:
>
> esi.so
>
> In records.config, I added these lines to enable debug logging:
>
> CONFIG proxy.config.diags.debug.enabled INT 1
> CONFIG proxy.config.diags.debug.tags STRING plugin_esi_intercept*
>
> In remap.config, I added this line to add an origin server:
>
> map / http://dev1.test/~ho/proxied
>
> dev1.test is an internal development host which runs a vanilla Apache HTTPD
> configured to serve up content from ~/public_html directories. In
> dev1.test:~ho/public_html/proxied, I have a couple CGI scripts (snippet.cgi
> emits a bare HTML fragment, esi.cgi emits an "X-Esi: 1" header and an HTML
> document that includes snippet.cgi with a fully-qualified URL):
>
> % cat ~ho/public_html/proxied/snippet.cgi
> #!/usr/local/bin/perl
>
> my $body = <<'EndHTML';
> <p>This is <tt>dev1.test:~ho/public_html/proxied/snippet.cgi</tt>.</p>
> EndHTML
>
> print "Content-Type: text/html\n",
>       "Content-Length: ", length($body), "\n",
>       "\n",
>       $body;
>
> % cat ~ho/public_html/proxied/esi.cgi
> #!/usr/local/bin/perl
>
> my $body = <<'EndHTML';
> <html>
>  <head>
>   <title>ESI test</title>
>  </head>
>  <body>
>   <p>This is <tt>dev1.test:~ho/public_html/proxied/esi.cgi</tt>.</p>
>   <esi:include src="http://dev1.test/~ho/snippet.cgi"; onerror="continue"/>
>  </body>
> </html>
> EndHTML
>
> print "Content-Type: text/html\n",
>       "Content-Length: ", length($body), "\n",
>       "X-Esi: 1\n",
>       "\n",
>       $body;
>
> From the host running Traffic server, I can definitely load those URLs:
>
> % curl -si http://dev1/~ho/proxied/snippet.cgi
> HTTP/1.1 200 OK
> Date: Fri, 17 Aug 2012 19:24:20 GMT
> Server: Apache/2.2.17
> Content-Length: 71
> Content-Type: text/html
>
> <p>This is <tt>dev1.test:~ho/public_html/proxied/snippet.cgi</tt>.</p>
>
> % curl -si http://dev1/~ho/proxied/esi.cgi
> HTTP/1.1 200 OK
> Date: Fri, 17 Aug 2012 19:24:22 GMT
> Server: Apache/2.2.17
> X-Esi: 1
> Content-Length: 219
> Content-Type: text/html
>
> <html>
>  <head>
>   <title>ESI test</title>
>  </head>
>  <body>
>   <p>This is <tt>dev1.test:~ho/public_html/proxied/esi.cgi</tt>.</p>
>   <esi:include src="http://dev1.test/~ho/snippet.cgi"; onerror="continue"/>
>  </body>
> </html>
>
> And when I issue requests on the hosts running Traffic Server, reverse
> proxying is generally working, as I can load snippet.cgi:
>
> % curl -si http://localhost:8080/snippet.cgi
> HTTP/1.1 200 OK
> Date: Fri, 17 Aug 2012 19:24:55 GMT
> Server: ATS/3.2.0
> Content-Length: 71
> Content-Type: text/html
> Age: 0
> Connection: keep-alive
>
> <p>This is <tt>dev1.test:~ho/public_html/proxied/snippet.cgi</tt>.</p>
>
> However, I get a "Content-Length: 0" and an empty entity body on the ESI
> enabled request to esi.cgi (despite a 200 OK status!):
>
> % curl -si http://localhost:8080/esi.cgi
> HTTP/1.1 200 OK
> Date: Fri, 17 Aug 2012 19:25:15 GMT
> Server: ATS/3.2.0
> Content-Type: text/html
> Content-Length: 0
> Connection: keep-alive
>
>
> Here is the logging information captured in traffic.out for that request:
>
> [Aug 17 15:30:14.029] Server {0x2b895be76040} DIAG: (plugin_esi_intercept)
> [setupServerIntercept] Setup server intercept successfully
> [Aug 17 15:30:14.029] Server {0x2b895be76040} DIAG: (plugin_esi_intercept)
> [serverIntercept] Received net accept event
> [Aug 17 15:30:14.029] Server {0x2b895be76040} DIAG: (plugin_esi_intercept)
> [init] ContData initialized!
> [Aug 17 15:30:14.030] Server {0x2b895be76040} DIAG: (plugin_esi_intercept)
> [serverIntercept] Received read ready event
> [Aug 17 15:30:14.030] Server {0x2b895be76040} DIAG: (plugin_esi_intercept)
> [handleRead] Parsed header
> [Aug 17 15:30:14.030] Server {0x2b895be76040} DIAG: (plugin_esi_intercept)
> [handleRead] Got content length as 257
> [Aug 17 15:30:14.030] Server {0x2b895be76040} DIAG: (plugin_esi_intercept)
> [serverIntercept] Received read ready event
> [Aug 17 15:30:14.030] Server {0x2b895be76040} DIAG: (plugin_esi_intercept)
> [handleRead] Appending 356 bytes to body
> [Aug 17 15:30:14.030] Server {0x2b895be76040} DIAG: (plugin_esi_intercept)
> [handleRead] Appending 257 bytes to body
> [Aug 17 15:30:44.030] Server {0x2b895be76040} DIAG: (plugin_esi_intercept)
> [serverIntercept] Received read complete/eos event 104
> [Aug 17 15:30:44.031] Server {0x2b895be76040} DIAG: (plugin_esi_intercept)
> [processRequest] Wrote reply of size 761
> [Aug 17 15:30:44.031] Server {0x2b895be76040} DIAG: (plugin_esi_intercept)
> [serverIntercept] Processed request successfully
> [Aug 17 15:30:44.031] Server {0x2b895be76040} DIAG: (plugin_esi_intercept)
> [serverIntercept] Completed request processing. Shutting down...
> [Aug 17 15:30:44.031] Server {0x2b895be76040} DIAG: (plugin_esi_intercept)
> [~ContData] Destroying continuation data
>
> On the server side, I only see the single request for esi.cgi (and not for
> snippet.cgi):
>
> 6071 dev1 x.x.x.x - - [17/Aug/2012:15:30:13 -0400] "GET /~ho/proxied/esi.cgi
> HTTP/1.1" 200 219 "-" "-" 193 354 5083
>
> We are evaluating Traffic Server specifically for ESI support, so this bug
> is quite a blocker for me. I've tried a few different things based on
> searching the Traffic Server mailing list in the past (for example, I made
> sure deflate was disabled on the origin server), and now I'm stuck. Does
> anybody know what is going on, or can someone suggest a next idea for me to
> debug the problem? Thanks!
>
> Humbly,
>
> Andrew
>
> --
> Andrew Ho
> Senior Software Developer
> [email protected]
>

Reply via email to