我正在运行nginx/ruby-on-rails,我有一个简单的多部分表单来上传文件.一切正常,直到我决定限制我想要上传的文件的最大大小.为此,我将nginx设置client_max_body_size
为1m(1MB)并期望在该规则中断时响应HTTP 413(Request Entity Too Large)状态.
问题是,当我上传一个1.2 MB的文件,而不是显示HTTP 413错误页面时,浏览器会挂起一点,然后在"页面加载时重置连接"消息时死掉.
我已经尝试过nginx提供的每一个选项,似乎没什么用.有没有人对此有任何想法?
这是我的nginx.conf:
worker_processes 1;
timer_resolution 1000ms;
events {
worker_connections 1024;
}
http {
passenger_root /the_passenger_root;
passenger_ruby /the_ruby;
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
server {
listen 80;
server_name www.x.com;
client_max_body_size 1M;
passenger_use_global_queue on;
root /the_root;
passenger_enabled on;
error_page 404 /404.html;
error_page 413 /413.html;
}
}
Run Code Online (Sandbox Code Playgroud)
谢谢.
**Edit**
环境/ UA:Windows XP/Firefox 3.6.13
问题:我使用 Webpack,我需要在 IFRAME 中显示页面的一部分。IFRAME 内容的标记是静态的,它包括一些 JS 库和一些自定义 JS 逻辑。
我的想法是:我想将 IFRAME 中呈现的页面的所有 JS 依赖项与其他 Webpack 捆绑包捆绑在一起,并将页面本身构建为静态 HTML 资源,然后我可以从主机页面将其引用为 IFRAME 的src
.
方法 1:我尝试file!val!html?attrs=script:src
对我的静态 HTML 文件使用 Webpack 的转换。
文件
page/
lib/
- jquery.js
- ...
- page.html
- page.js
Run Code Online (Sandbox Code Playgroud)
页面.html
...
<script src="./page.js"></script>
...
Run Code Online (Sandbox Code Playgroud)
页面.js
const $ = require('./lib/jquery.js');
window.foo = () => { ... };
Run Code Online (Sandbox Code Playgroud)
Webpack 配置
{
...,
entry: {
main: [...],
page: ['page/page.js']
}
}
Run Code Online (Sandbox Code Playgroud)
这几乎成功了,因为 JS 包和 HTML 资源确实已生成,并且我可以require
在 …
我试图告诉nginx永远缓存我的一些资产(js,css),或者至少在很长一段时间内.
这个想法是,一旦资产包被编译并使用/assets/
URI前缀(例如/assets/foo-{fingerprint}.js
)发布,它就会保留在那里并且不需要改变.
互联网告诉我,我应该写下面的规则:
location ~ ^/assets/.*-([^.]+)\.(js|css)$ {
gzip_static on; # there's also a .gz of the asset
expires max;
add_header Cache-Control public;
add_header Last-Modified "";
add_header ETag "";
break;
}
Run Code Online (Sandbox Code Playgroud)
我希望这会导致HTTP代码304"未修改"的响应,但我得到的是每次都是一致的HTTP 200(OK).
我尝试了其他一些方法,例如:
a)明确将修改时间设置为过去的恒定时间点;
add_header Last-Modified "Thu, 01 Jan 1970 00:00:00 GMT";
Run Code Online (Sandbox Code Playgroud)
b)改用If-None-Match
支票;
add_header ETag $1;
if_modified_since off;
Run Code Online (Sandbox Code Playgroud)
然而,唯一真正起作用的是:
add_header Last-Modified "Thu, 01 Jan 2030 00:00:00 GMT";
if_modified_since before;
Run Code Online (Sandbox Code Playgroud)
我迷路了.这与我认为正确的一切相反.请帮忙.
我正在尝试将元素克隆到DOM中的新位置。我正在使用,insertAdjacentElement
但这似乎只是将其“剪切并粘贴”到新位置。是否可以克隆该元素?
document.getElementById('subNav').insertAdjacentElement(
'afterbegin',
document.getElementById('main_0_columnb_0_PanelMenu')
);
Run Code Online (Sandbox Code Playgroud) http ×2
javascript ×2
nginx ×2
caching ×1
facebook ×1
file-upload ×1
html ×1
permissions ×1
publish ×1
webpack ×1