Does the expires directive add the head if the Expire head not exist?
Igor Sysoev
is at rambler-co.ru
Mon Aug 18 09:18:09 MSD 2008
On Mon, Aug 18, 2008 at 12:37:40PM +0800, Delta Yeh wrote:
> So the only question remained is : Is it possible to set Expire
> header according to the response Content-Type in nginx?
No. Use the following configuraiton:
location / {
proxy_pass http://upstream;
proxy_redirect default;
}
location *~ \.(css|jpg|jpeg|gif)$ {
proxy_pass http://upstream;
expires max;
}
> 2008/8/18 Delta Yeh <delta.yeh at gmail.com>:
> > I think it's because ncache2.0 module.
> >
> > I built nginx 0.7.10 with ncache2.0 but i didn't turn it on in my conf.
> >
> > When I use if ( $request_uri ~* ^.+.(css|jpg|jpeg|gif)$ ) {
> > #if ( $content_type ~ css ) {
> > expires max;
> >
> >
> > }
> >
> > I the error log is :
> >
> > 2008/08/18 10:11:16 [notice] 5589#0: using the "epoll" event method
> > 2008/08/18 10:11:16 [notice] 5589#0: nginx/0.7.10
> > 2008/08/18 10:11:16 [notice] 5589#0: built by gcc 4.1.2 20061115
> > (prerelease) (Debian 4.1.1-21)
> > 2008/08/18 10:11:16 [notice] 5589#0: OS: Linux 2.6.22.18-co-0.7.3
> > 2008/08/18 10:11:16 [notice] 5589#0: getrlimit(RLIMIT_NOFILE): 1024:1024
> > 2008/08/18 10:11:16 [notice] 5595#0: start worker processes
> > 2008/08/18 10:11:16 [notice] 5595#0: start worker process 5596
> > 2008/08/18 10:12:26 [notice] 5595#0: signal 17 (SIGCHLD) received
> > 2008/08/18 10:12:26 [alert] 5595#0: worker process 5596 exited on signal 11
> > 2008/08/18 10:12:26 [notice] 5595#0: start worker process 5602
> > 2008/08/18 10:12:32 [notice] 5595#0: signal 17 (SIGCHLD) received
> > 2008/08/18 10:12:32 [alert] 5595#0: worker process 5602 exited on signal 11
> > 2008/08/18 10:12:32 [notice] 5595#0: start worker process 5608
> > 2008/08/18 10:13:20 [notice] 5595#0: signal 17 (SIGCHLD) received
> > 2008/08/18 10:13:20 [alert] 5595#0: worker process 5608 exited on signal 11
> > 2008/08/18 10:13:20 [notice] 5595#0: start worker process 5625
> >
> >
> > But when I build without ncache2.0 , the same conf works as expected.
> > I will report the bug to the author of ncache.
> >
> > 2008/8/18 Delta Yeh <delta.yeh at gmail.com>:
> >> 2008/8/18 Maxim Dounin <mdounin at mdounin.ru>
> >>>
> >>> Hello!
> >>>
> >>> On Sun, Aug 17, 2008 at 07:27:38PM +0800, Delta Yeh wrote:
> >>>
> >>>> I use
> >>>>
> >>>> location / {
> >>>> proxy_redirect off;
> >>>> proxy_redirect default;
> >>>
> >>> JFYI:
> >>>
> >>> "proxy_redirect default" is useless here since redirects was switched off by "proxy_redirect off".
> >>>>
> >>>> #if ( $request_uri ~* ^.+.(css|jpg|jpeg|gif)$ ) {
> >> I had thought proxy_redirect off first clear all previous proxy
> >> redirect settings, then the second proxy_redirect default will
> >> define a clean default settings. Maybe I 'm wrong.
> >>>
> >>> JFYI:
> >>>
> >>> Since last dot in regex isn't escaped, this expression will match something like "/some-notes-about-css" as well as "/style.css".
> >>
> >> Aha, I only copied it from others configuration for my test, but
> >> thank you anyway, I will tweak it in production environment later.
> >>
> >>
> >>>> if ( $content_type ~* css ) {
> >>>
> >>> Variable $content_type contains Content-Type header value from *request*. It's unlikely that request will contain css in it's Content-Type.
> >>>
> >>> See http://wiki.codemongers.com/NginxHttpCoreModule#var_content_type
> >>
> >> I think Content-Type value can be text/css .
> >>
> >>>> expires 1h;
> >>>>
> >>>> }
> >>>>
> >>>> proxy_pass http://my_upstream;
> >>>>
> >>>> }
> >>>>
> >>>> but it does not work.
> >>>>
> >>>> when I use $request_uri the browser get error response. It seems the nginx
> >>>> box reset the tcp connection.
> >>>
> >>> I've just checked and with $request_uri it works as expected. I.e. nginx adds Expires and Cache-Control headers to response if .
> >>>
> >>> Try tcpdump / error log / error log at debug level to figure out what's actually happening.
> >> I will try again and share with others what mistake I had made, ^_^
> >>>> when I use $content_type no Expires head returned by nginx.
> >>>
> >>> Also as expected, see above.
> >>>
> >>> Maxim Dounin
> >>>
> >>
> >
--
Igor Sysoev
http://sysoev.ru/en/
More information about the nginx
mailing list