小编jwe*_*rre的帖子

如何强制 NGINX 加载新的静态文件?

我最近向一个网站推送了一个重大更新,但我遇到了一些人无法登录的问题,因为他们的浏览器正在加载旧的javascript 文件。我做过的一些事情包括:

  • 缓存破坏所有 javascript 文件
  • sendfile off在 nginx.conf 中设置
  • expires 1s在 mysite.conf 中设置
  • 显式设置 Cache-Control 标头: add_header Cache-Control no-cache;

下面是我的 nginx 配置文件。任何帮助将非常感激。

/etc/nginx/sites-enabled/mysite.conf

proxy_cache_path  /var/cache/nginx levels=1:2 keys_zone=one:8m max_size=3000m inactive=600m;

server {
    listen 80;
    server_name mysite.com;
    return 301 https://www.mysite.com$request_uri;
}

server {

        # listen for connections on all hostname/IP and at TCP port 80
        listen *:80;

        # name-based virtual hosting
        server_name www.mysite.com;

        # location of the web root for all static files (this should be changed for …
Run Code Online (Sandbox Code Playgroud)

nginx cache

26
推荐指数
4
解决办法
13万
查看次数

使用负载均衡器后面的 ngnix 将 http 重写为 https

我正在使用 Rackspace 负载平衡器,它使我能够在管理面板内设置我的 ssl 密钥/pem。一切正常,我可以同时使用 http 和 https 协议。但是,如果我尝试使用以下方法将 http 重定向到 https:

server{
  listen *:80;
  server_name mydomain.com www.mydomain.com; 
  rewrite ^ https://mydomain.com$request_uri? permanent;
Run Code Online (Sandbox Code Playgroud)

...我得到一个重定向循环。我意识到我没有在监听端口 443,但那是因为负载均衡器为我处理了这个。我也尝试将重写包装起来if ($scheme ~* http){无济于事。

我的问题的另一部分是我想从 url 中删除 www,我可以通过一次重写来做到这一点吗?上面的重写不应该处理这个问题吗?

谢谢你的帮助!

nginx load-balancing

13
推荐指数
2
解决办法
2万
查看次数

绑定:无法分配请求的地址

我最近从 Rackspace 切换到 AWS,并且正在使用freegeopip设置一个简单的地理定位服务器。虽然以下命令在新的 Rackspace 服务 (Ubuntu) 上运行良好,但我无法在 AWS 上工作(尝试过 Red Hat 和 Ubuntu)。这是我用来设置它的代码:

curl -s https://storage.googleapis.com/golang/go1.4.1.linux-amd64.tar.gz | tar -C /opt -zx
export GOPATH=$HOME
export GOROOT=/opt/go
export PATH=$PATH:/opt/go/bin
go get github.com/fiorix/freegeoip/cmd/freegeoip
$GOPATH/bin/freegeoip -addr="<MY IP ADDRESS>:8080"
Run Code Online (Sandbox Code Playgroud)

正如我所说,这在我的 Rackspace 实例上完美运行,但 AWS 给了我这个错误:

listen tcp <MY IP ADDRESS>:8080: bind: cannot assign requested address
Run Code Online (Sandbox Code Playgroud)

我已经用 netstat 检查了这个端口,但上面没有运行任何东西。我不知道为什么会出现此错误。有任何想法吗?

geolocation rackspace amazon-web-services

9
推荐指数
2
解决办法
1万
查看次数

正则表达式位置块在 NGINX 中不起作用

我的 nginxconf 中有一个非常简单的位置块,如下所示:

location ~* ^\/[a-z0-9]{24}$ {
    // do some things
}
Run Code Online (Sandbox Code Playgroud)

我正在尝试捕获以 Mongo ObjectId 结尾的 url。例如: https: //example.com/5550cdea6928495a25bb8df8

由于某种原因 nginx 告诉我有一个错误:

2016/01/07 22:36:32 [emerg] 26445#0: unknown directive "24}$" in /etc/nginx/sites-enabled/mysite.com:32
Run Code Online (Sandbox Code Playgroud)

nginx regex

6
推荐指数
1
解决办法
2939
查看次数

如何升级 Nginx?

我在 Ububtu 上,我正在尝试将 Nginx 1.0.5 升级到最新版本 1.2.6。这就是我所做的和无效的。

$ nginx -v
nginx: nginx version: nginx/1.0.5
$ curl -O http://nginx.org/download/nginx-1.2.6.tar.gz
$ tar xvzf nginx-1.2.6.tar.gz
$ cd nginx-1.2.6/
$ ./configure
$ make && sudo make install

$ nginx -v
nginx: nginx version: nginx/1.0.5 <<< still old version!!!
Run Code Online (Sandbox Code Playgroud)

任何想法将不胜感激。谢谢。

ubuntu nginx

2
推荐指数
1
解决办法
1824
查看次数

为什么我的 404 返回 200 状态码?

不知道为什么,但我所有的错误页面都以 200 响应。这对我来说有点奇怪,页面存在但它们不应该有相应的状态代码吗?如何让 Nginx 使用 404 状态代码呈现我的 404 页面?

例如:

? curl -I http://example.com/404
HTTP/1.1 200 OK <<--------------------------- WTF! THIS SHOULD BE 404!!
Server: nginx/1.8.0
Date: Tue, 17 Apr 2018 02:24:04 GMT
Content-Type: text/html; charset=UTF-8
...
Run Code Online (Sandbox Code Playgroud)

这是我的配置的相关部分:

server {

listen 80 default_server;

server_name example.com;
root /var/www/example/static;
index index.html;

try_files $uri $uri/ $uri.html =404;

# error pages
error_page 400 =400 /400; # bad request
error_page 401 =401 /401; # unauthorized
error_page 403 =403 /403; # forbidden
error_page 404 =404 /404; # …
Run Code Online (Sandbox Code Playgroud)

http nginx http-status-code-404 http-status-code

0
推荐指数
1
解决办法
5643
查看次数