【问题标题】:Expires in nginx.conf throws error on ubuntu but not on OSXnginx.conf 中的过期在 ubuntu 上抛出错误,但在 OSX 上没有
【发布时间】:2016-10-25 18:37:26
【问题描述】:

我的 nginx.conf 在本地 (OSX) 上运行,但在 prod (Ubuntu) 上抛出错误

完整文件:https://github.com/thomasdane/partywave/blob/master/nginx.conf

但相关部分是:

# 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;
    }
}

在我的 Mac 上,效果很好并且输出:

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

但是,当我在生产环境(Ubuntu 14.04)上运行完全相同的 nginx.conf 时,出现以下错误:

nginx: [emerg] "expires" directive invalid value in /etc/nginx/nginx.conf:46

如果我删除 $expires 代码,它可以在生产环境中正常工作(当然没有过期)。

我已经在谷歌上搜索了一段时间,但不知道为什么。希望有任何帮助。

【问题讨论】:

  • 它们是nginx的不同版本吗?
  • @RichardSmith 是的,这就是问题所在。感谢您的帮助。

标签: ubuntu nginx


【解决方案1】:

你在 ubuntu 有什么版本的 nginx? 如果你有 14.04 和默认 repo,它是1.4.6。并且 expires 只接受 1.7.9 之后的变量。 您可以添加 nginx official repo 并从中安装 1.10。半自动安装:

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

【讨论】:

  • 这解决了!现在看来如此明显。非常感谢!
猜你喜欢
  • 1970-01-01
  • 2021-08-25
  • 1970-01-01
  • 1970-01-01
  • 2011-06-21
  • 2020-06-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多