My nginx.conf is working on local (OSX) but throwing an error on prod (Ubuntu)
The full file: https://github.com/thomasdane/partywave/blob/master/nginx.conf
But the relevant part is:
# Expires map
map $sent_http_content_type $expires {
default off;
text/html 1w;
text/css 1w;
application/javascript 1w;
~image/ 1w;
}
server {
listen 80;
expires $expires;
server_name http://www.partywave.co/;
location / {
proxy_pass http://127.0.0.1:8080;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;
}
}
On my mac, that works great and outputs:
curl -I localhost/images/hero.jpg
HTTP/1.1 200 OK
Server: nginx/1.10.1
Date: Tue, 25 Oct 2016 09:27:51 GMT
Content-Type: image/jpeg
Content-Length: 270624
Connection: keep-alive
X-Powered-By: Express
Accept-Ranges: bytes
Cache-Control: max-age=604800
Last-Modified: Fri, 09 Sep 2016 09:57:09 GMT
ETag: W/"42120-1570e612108"
Expires: Tue, 01 Nov 2016 09:27:51 GMT
However when I run the exact same nginx.conf on production (Ubuntu 14.04) I get the following error:
nginx: [emerg] "expires" directive invalid value in /etc/nginx/nginx.conf:46
If I delete the $expires code, it works fine on production (without the expires of course).
I've been googling for a while and cannot figure out why. Would love any help.
What version of nginx do you have in ubuntu? If you have 14.04 with default repo, it is 1.4.6. And expires accepts variables only since 1.7.9. You can add nginx official repo and install 1.10 from it. Semi-automatic installation:
apt-get install -y lsb-release
LIST="/etc/apt/sources.list.d/nginx.list"; OS=`lsb_release -si | tr '[:upper:]' '[:lower:]'`; RELEASE=`lsb_release -sc`; if [ ! -f $LIST ]; then echo -e "deb http://nginx.org/packages/$OS/ $RELEASE nginx\ndeb-src http://nginx.org/packages/$OS/ $RELEASE nginx" > $LIST; else echo "File $LIST exists! Check it."; fi
wget -q -O- http://nginx.org/keys/nginx_signing.key | apt-key add -
apt-get update
apt-get remove -y nginx-full nginx-common
apt-get install nginx
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With