Hi Kit, Heh, I just stole the one that was checked in to the upstream repository earlier this week:
wget -Oplugins/experimental/esi/Makefile.am https://raw.github.com/apache/trafficserver/master/plugins/experimental/esi/Makefile.am perl -pi.orig -e 's,experimental/lua,experimental/esi,' configure.ac autoreconf -i CFLAGS='-fPIC -Wno-deprecated' CXXFLAGS='-fPIC -Wno-deprecated' ./configure (cd plugins/experimental/esi && make) (The silly bit with Perl is because the default configure.ac in your fork had also not yet been updated.) Note that I had to add -Wno-deprecated because otherwise the -Wall resulted in some deprecation warnings. I'll try this out and also give your Makefile a try (but you might want to merge the upstream changes to the build system, it's nice that there's a Makefile.am for esi now). Humbly, Andrew -- Andrew Ho Senior Software Developer [email protected] On Fri, Aug 17, 2012 at 3:49 PM, Shu Kit Chan <[email protected]> wrote: > Just added the Makefile I use. > You can try it out. It is nothing fancy. A pretty simple one. > > On Fri, Aug 17, 2012 at 3:09 PM, Andrew Ho <[email protected]> wrote: > > Hi Kit, > > > > Thanks for your quick response. I had come across your blog entries and > > previous mailing list posts and they were quite useful for me so far. > > > > I noticed that there is neither a Makefile nor a Makefile.am in your > > repository. How do you usually build the plugin from source? > > > > > > Humbly, > > > > Andrew > > > > -- > > Andrew Ho > > Senior Software Developer > > [email protected] > > > > > > > > On Fri, Aug 17, 2012 at 1:31 PM, Shu Kit Chan <[email protected]> > wrote: > >> > >> 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] > >> > > > > > >
