I want to use “expires” directive to decrease the sever load.
My question is if there is no Expires head from the backend server ,
does
nginx add such head?
BR,
DeltaY
I want to use “expires” directive to decrease the sever load.
My question is if there is no Expires head from the backend server ,
does
nginx add such head?
BR,
DeltaY
I use
location / {
proxy_redirect off;
proxy_redirect default;
#if ( $request_uri ~* ^.+.(css|jpg|jpeg|gif)$ ) {
if ( $content_type ~* 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.
when I use $content_type no Expires head returned by nginx.
2008/8/15 Igor S. [email protected]
On Fri, Aug 15, 2008 at 05:42:06PM +0800, Delta Y. wrote:
I want to use “expires” directive to decrease the sever load.
My question is if there is no Expires head from the backend server , does
nginx add such head?
nginx’s expires overrides backend headers.
Hello!
On Sun, Aug 17, 2008 at 07:27:38PM +0800, Delta Y. 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)$ ) {
JFYI:
Since last dot in regex isn’t escaped, this expression will match
something like “/some-notes-about-css” as well as “/style.css”.
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
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.
when I use $content_type no Expires head returned by nginx.
Also as expected, see above.
Maxim D.
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 Y. [email protected]:
2008/8/18 Maxim D. [email protected]
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 .
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,
On Mon, Aug 18, 2008 at 12:37:40PM +0800, Delta Y. 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;
}
Hi Igor,
I use nginx as a pure reverse proxy.
I think set the Expires header according to the response Content-Type
is more resonable than the request uri in this scenario.
Do you have any plan to add the directive like
proxy_set_expires text/css 30d
Thanks.
DeltaY
2008/8/18, Igor S. [email protected]:
On Mon, Aug 18, 2008 at 03:18:23PM +0800, Delta Y. wrote:
I use nginx as a pure reverse proxy.
I think set the Expires header according to the response Content-Type
is more resonable than the request uri in this scenario.Do you have any plan to add the directive like
proxy_set_expires text/css 30d
Yes, it may be added, but in form “expires text/css image/gif 30d”.
So the only question remained is : Is it possible to set Expire
header according to the response Content-Type in nginx?
2008/8/18 Delta Y. [email protected]:
This forum is not affiliated to the Ruby language, Ruby on Rails framework, nor any Ruby applications discussed here.
Sponsor our Newsletter | Privacy Policy | Terms of Service | Remote Ruby Jobs