标签: nginx

这个nginx错误“重写或内部重定向循环”是什么意思?

tail -f /var/log/nginx/error.log
2013/05/04 23:43:35 [error] 733#0: *3662 rewrite or internal redirection cycle while internally redirecting to "/index.html", client: 127.0.0.1, server: _, request: "GET /robots.txt HTTP/1.1", host: "kowol.mysite.net"
HTTP/1.1", host: "www.joesfitness.net"
2013/05/05 00:49:14 [error] 733#0: *3783 rewrite or internal redirection cycle while internally redirecting to "/index.html", client: 127.0.0.1, server: _, request: "GET / http://www.qq.com/ HTTP/1.1", host: "www.qq.com"
2013/05/05 03:12:33 [error] 733#0: *4232 rewrite or internal redirection cycle while internally redirecting to "/index.html", client: 127.0.0.1, server: _, request: "GET / HTTP/1.1", …
Run Code Online (Sandbox Code Playgroud)

nginx

89
推荐指数
4
解决办法
15万
查看次数

上游响应被缓冲到一个临时文件

我有一个相当大的和缓慢的(复杂的数据,复杂的前端)的Web应用程序构建RoR并担任Pumanginx作为反向代理。查看nginx错误日志,我看到很多条目,例如:

2014/04/08 09:46:08 [warn] 20058#0: *819237 an upstream response is buffered to a temporary file 
    /var/lib/nginx/proxy/8/47/0000038478 while reading upstream, 
    client: 5.144.169.242, server: engagement-console.foo.it, 
    request: "GET /elements/pending?customer_id=2&page=2 HTTP/1.0", 
    upstream: "http://unix:///home/deployer/apps/conversationflow/shared/sockets/puma.sock:/elements/pending?customer_id=2&page=2", 
    host: "ec.reputationmonitor.it", 
    referrer: "http://ec.foo.it/elements/pending?customer_id=2&page=3"
Run Code Online (Sandbox Code Playgroud)

我很好奇,因为对于不同的用户和不同的用户交互,页面不太可能保持相同,而且我不认为在磁盘上缓冲响应是必要的/有用的。

我知道proxy_max_temp_file_size并将其设置为 0,但在我看来有点尴尬(我的代理尝试缓冲但没有文件可以缓冲到...怎么能更快?)。

我的问题是:

  1. 如何删除 [warn] 并避免缓冲响应?关闭proxy_buffering还是设置proxy_max_temp_file_size为0更好?为什么?

  2. 如果nginx缓冲响应:它什么时候提供缓冲响应,给谁,为什么?

  3. 为什么默认情况下nginx打开proxy_buffering然后[警告]如果它实际上缓冲了响应?

  4. 响应何时触发该选项?当需要> 几秒钟(多少?)来提供响应时?这个可以配置吗?

TIA,ngw。

nginx reverse-proxy buffer

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

嵌套位置 nginx

我无法理解 nginx 中的嵌套位置。我有两个位置有一些共同的配置指令,所以与其重复指令,我更喜欢使用正则表达式重复 URI:

location ~ /a|/b {
        location /a {
        }
        location /b {
        }
}
Run Code Online (Sandbox Code Playgroud)

但是,这给出了错误

nginx: [emerg] location "/a" is outside location "/a|/b" in /etc/nginx/nginx.conf:36
Run Code Online (Sandbox Code Playgroud)

不过,没有 or|似乎没问题。

location ~ /a {
        location /a {
        }
}
Run Code Online (Sandbox Code Playgroud)

我究竟做错了什么?有没有更好的方法来做到这一点而不重复任何事情?我可以以其他方式对位置进行分组吗?

nginx

86
推荐指数
1
解决办法
10万
查看次数

您是否需要在 nginx 中使用单独的 IPv4 和 IPv6 侦听指令?

我看过各种配置示例,用于在 nginx 上处理双栈 IPv4 和 IPv6 虚拟主机。许多人建议这种模式:

listen 80;
listen [::]:80 ipv6only=on;
Run Code Online (Sandbox Code Playgroud)

据我所知,这与以下内容完全相同:

listen [::]:80 ipv6only=off;
Run Code Online (Sandbox Code Playgroud)

为什么要使用前者?我能想到的唯一原因是您是否需要特定于每个协议的其他参数,例如,如果您只想deferred在 IPv4上设置。

nginx ipv6 ipv4

86
推荐指数
4
解决办法
7万
查看次数

nginx - 客户端请求正文被缓冲到一个临时文件

每次尝试上传大文件时,我的日志文件中都会出现以下错误。

a client request body is buffered to a temporary file /var/lib/nginx/body/0000000001
Run Code Online (Sandbox Code Playgroud)

虽然文件上传成功,但我总是收到上述错误。

我增加了client_body_buffer_size1000m这是我所期望的上传是最大的文件。但是,这只是一个猜测,虽然我不再收到该错误,但我想知道这是否是为client_body_buffer_size?

如果有人能阐明该指令以及如何使用它,我将不胜感激。

nginx

84
推荐指数
3
解决办法
15万
查看次数

Nginx 通过代理重定向、重写和保留 URL

在 Nginx 中,我们一直在尝试重定向 URL,如下所示:

http://example.com/some/path -> http://192.168.1.24
Run Code Online (Sandbox Code Playgroud)

用户仍然可以在浏览器中看到原始 URL。一旦用户被重定向,假设他们点击链接到/section/index.html,我们希望它发出一个导致重定向的请求

http://example.com/some/path/section/index.html -> http://192.168.1.24/section/index.html
Run Code Online (Sandbox Code Playgroud)

并再次保留原始 URL。

我们的尝试涉及使用代理和重写规则的各种解决方案,下面显示了使我们最接近解决方案的配置(请注意,这是 Web 服务器的 Web 服务器配置example.com)。但是,这仍然存在两个问题:

  • 它没有正确执行重写,因为 Web 服务器收到的请求 URLhttp://192.168.1.24包含/some/path并因此无法提供所需的页面。
  • 提供页面后将鼠标悬停在链接上时,/some/pathURL 中缺少

    server {
        listen          80;
        server_name     www.example.com;
    
        location /some/path/ {
            proxy_pass http://192.168.1.24;
            proxy_redirect http://www.example.com/some/path http://192.168.1.24;
            proxy_set_header Host $host;
        }
    
        location / {
            index index.html;
            root  /var/www/example.com/htdocs;
        }
    }
    
    Run Code Online (Sandbox Code Playgroud)

我们正在寻找一种仅涉及更改example.com. 我们可以更改192.168.1.24(也是 Nginx)上的配置,但是我们想尝试避免这种情况,因为我们需要为数百个通过 代理访问的不同服务器重复此设置example.com

rewrite nginx proxy redirect

83
推荐指数
3
解决办法
27万
查看次数

每次执行proxy_pass时如何强制nginx解析DNS(动态主机名)?

我正在使用 nginx/0.7.68,在 CentOS 上运行,配置如下:

server {
    listen       80;
    server_name ***;
    index index.html index.htm index.php default.html default.htm default.php;

    location / {
            root   /***;
            proxy_pass   http://***:8888;
            index  index.html index.htm;
    }
    # where *** is my variables
Run Code Online (Sandbox Code Playgroud)

proxy_pass是针对 IP 频繁更改的 DNS 记录。Nginx 缓存过时的 IP 地址,导致请求错误的 IP 地址。

当 IP 地址过期时,如何阻止 nginx 缓存它?

linux nginx

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

Nginx - 根与别名,用于服务单个文件?

在处理nginx单个文件(例如robots.txt(提示:每次都清除浏览器缓存))多个小时后,我最终采用了两种不同的方式,一种使用alias指令,另一种使用root指令,如下所示:

location /robots.txt { alias /home/www/static/robots.txt; }
location /robots.txt { root /home/www/static/;  }
Run Code Online (Sandbox Code Playgroud)

两者之间有什么功能上的区别吗?还是安全问题?与其他指令有冲突吗?(对于另一个 /static 位置,两者似乎都很好)。或者有什么理由选择一个?

注-我没有使用这两个在同一时间:)而我想每一个,一次一个,两者的工作。我不是在问它们是如何在同一个文件中交互的,而是使用哪个更好。

nginx

79
推荐指数
3
解决办法
8万
查看次数

为什么我有 uWSGI 还需要 nginx

关于在部署Django应用时如何配置nginx配合uWGSI的教程有很多。

但是为什么我需要在这个套件中使用 nginx?uWSGI 本身可以服务 WSGI Python 应用程序,可以服务静态文件,也可以做 SSL。nginx 可以做什么而 uWSGI 不能?

nginx django uwsgi

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

如何在 Mac OS X 上重启 Nginx?

我刚刚在 Mac OS X 上安装了 Nginx(感谢http://www.kevinworthington.com/nginx-mac-os-snow-leopard-2-minutes/),但是如何在 Mac OS X 上重新启动 Nginx?

谢谢!

mac nginx mac-osx

71
推荐指数
5
解决办法
20万
查看次数

标签 统计

nginx ×10

buffer ×1

django ×1

ipv4 ×1

ipv6 ×1

linux ×1

mac ×1

mac-osx ×1

proxy ×1

redirect ×1

reverse-proxy ×1

rewrite ×1

uwsgi ×1