这个问题是关于ssl_prefer_server_ciphers在配置 nginx 时设置正确的值。
根据 Mozilla 建议的一个相当典型的配置,该值应该是off(来源:https : //ssl-config.mozilla.org/#server=nginx&server-version=1.17.7&config=intermediate&openssl-version=1.0.1g)。
根据 nginx 自己的文档,应该始终将其设置为on:https : //www.nginx.com/blog/nginx-https-101-ssl-basics-getting-started/(在文档中搜索ssl_prefer_server_ciphers)。
我不知道该遵循哪些建议。这两个来源都非常可靠。
一些行业专家能否就何时应该转off,以及何时转on?也很想知道原理。
可以X-FORWARDED-FOR包含多个IP地址吗?如果是这样,为什么?一个说明性的例子会很棒。
设置访问控制列表时,0.0.0.0/0和之间有什么区别::/0?
我看到这个是我正在设置的 AWS EC2 实例
我在调sysctl.conf。
根据linode 网站上的优化指南,以下是要设置的合理值sysctl.conf:
net.ipv4.tcp_max_syn_backlog = 3240000
Run Code Online (Sandbox Code Playgroud)
但是,archlinux 优化指南中的相同值是:
net.ipv4.tcp_max_syn_backlog = 65536
Run Code Online (Sandbox Code Playgroud)
最后,在另一个优化博客上(虽然很旧,但在谷歌上的 SEO 仍然很高),其价值被吹捧为:
net.ipv4.tcp_max_syn_backlog = 4096
Run Code Online (Sandbox Code Playgroud)
所有这些球场都大不相同。将此值设置为高数(与低数相比)背后的原因是什么?哪一个应该是真正的“理智”价值开始?
我正在编写 nginx 配置,我有一个基本问题。
之间有什么区别:
listen 443 ssl;对比listen [::]:443 ssl;对比listen [::]:443 ssl http2;
我的目标是保护这个 Web 应用程序的安全,同时保持对旧客户端的兼容。
注意:我知道这[::]:443与 ipv6 有关,但在这种情况下它是否也包含 ipv4?想澄清我的概念。
我最近更改了我的 nginx 配置,将所有 http 流量重定向到 https(并将所有 www 流量重定向到 no-www)。
也添加add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;到我的服务器块是否有意义?或者这是不需要的,因为我已经重定向了所有流量?知道优点(和缺点,如果有的话)会很棒。
如果相关,我当前的虚拟主机配置是:
server {
server_name example.com www.example.com;
listen 80;
return 301 https://example.com$request_uri;
}
server {
server_name www.example.com;
listen 443 ssl;
ssl_certificate /etc/nginx/ssl/cert_chain.crt;
... other SSL related config ...
return 301 https://example.com$request_uri;
}
server {
server_name example.com;
listen 443 ssl;
... other SSL related config ...
... remaining server configuration ...
}
Run Code Online (Sandbox Code Playgroud) 在典型的网站 nginx 配置(例如博客)中,如何使用 nginxlimit_except拒绝除典型的 http 方法(即GET和POST)之外的所有方法?想象一下,它驻留在server块中,并且块被配置为将所有流量重定向到https和www。
如何实现这一点的说明性示例会很棒。
我知道有些有争议的方法是:
add_header Allow "GET, POST, HEAD" always;
if ( $request_method !~ ^(GET|POST|HEAD)$ ) {
return 405;
}
Run Code Online (Sandbox Code Playgroud)
然而,鉴于if is evil,探索替代方法是有意义的。
我需要添加ssl_ciphers我的 nginx 配置。根据https://wiki.mozilla.org/Security/Server_Side_TLS,以下是推荐的密码套件(具有中间兼容性):
Cipher suites (TLS 1.3): TLS_AES_128_GCM_SHA256:TLS_AES_256_GCM_SHA384:TLS_CHACHA20_POLY1305_SHA256
Cipher suites (TLS 1.2): ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384
Run Code Online (Sandbox Code Playgroud)
我的问题很简单:如何在 nginx 配置中添加 TLS 1.3 和 TLS 1.2 套件?
像这样?
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_prefer_server_ciphers on;
ssl_ciphers 'TLS_AES_128_GCM_SHA256:TLS_AES_256_GCM_SHA384:TLS_CHACHA20_POLY1305_SHA256';
ssl_ciphers 'ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384';
Run Code Online (Sandbox Code Playgroud) 我使用 nginx 作为带有 Gunicorn 应用程序服务器(Django 应用程序)的反向代理。
在我的 nginx 虚拟主机文件中,有两个server块。前者将www流量重定向到后者(后者处理non-www,https流量)。
具体来说,前一个位置块是:
server {
server_name www.example.com;
listen 443 ssl http2;
listen [::]:443 ssl http2;
return 301 https://example.com$request_uri;
}
Run Code Online (Sandbox Code Playgroud)
后一个位置块是:
server {
server_name example.com;
listen 443 ssl http2 reuseport;
listen [::]:443 ssl http2 reuseport;
# other directives here
}
Run Code Online (Sandbox Code Playgroud)
reuseport请注意后一个块中的使用。
如果我放入reuseport两个块,则会收到错误:nginx: [emerg] duplicate listen options for 0.0.0.0:443 in /etc/nginx/sites-enabled/vhost:62。
如果我将它单独插入前一个块中,它就可以工作。我对正确放置它的位置感到困惑,前一个块还是后一个块。有人可以澄清一下吗?
据我了解,该reuseport参数指示 nginx 为每个工作进程创建一个单独的侦听套接字,允许内核在工作进程之间分配传入连接(以处理客户端和服务器之间发送的多个数据包)。
但这并不能帮助我理解为什么我不能reuseport在上述两个块中使用它,或者我应该在哪一个块中使用它(假设我只能在一个块中使用它)。
配置 nginx 时,哪些注意事项会影响client_body_buffer_size?
我已将其设置10m为用户上传照片和图像模因的网站(有点像9gag)。请注意,也client_max_body_size设置为。10m总的来说,我的推理是网络服务器应该接受图像大小为 10MB 的 POST 请求(网站策略) - 因此这两个指令都应该是10m.
这个推理正确吗?
有人可以阐明影响设置什么值的因素client_body_buffer_size以及client_body_buffer_size(对于我描述的那种网络应用程序)的典型值吗?
如果重要的话,我使用 nginx 作为反向代理。
对我的文件夹中的 favicon.ico 和资产的无用 GET 请求/static/正在我的 nginx 访问日志中乱七八糟。而且它是一个繁忙的服务器 - 这意味着 I/O 也被浪费了。更不用说我的fail2ban安装有时会做出扭曲的决定!
如何排除这些令人讨厌的日志行?我在 nginx 上1.4.x。
我找到了一种在apache中做到这一点的方法,但在 nginx 中却找不到。
这是我的 nginx 虚拟主机文件:
proxy_cache_path /var/cache/nginx levels=1:2 keys_zone=my_cache:10m max_size=100m inactive=6m;
upstream my_server {
server unix:/home/myuser/myfolder/myapp/myapp.sock fail_timeout=0;
}
server {
server_name example.com www.example.com;
listen 80;
return 301 https://example.com$request_uri;
}
server {
server_name www.example.com;
listen 443 ssl;
listen [::]:443 ssl;
. . . SSL related stuff . . .
. . . adding security related headers . . .
return 301 …Run Code Online (Sandbox Code Playgroud) 我正在开发一个带有 nginx 反向代理和 Gunicorn 应用服务器的 Django 应用程序。作为一名新手 Web 开发人员,我需要将www流量重定向到no wwwWeb 服务器级别的帮助。我目前正在应用程序内的中间件级别执行相同的操作,但需要提高性能。
目前我的nginx虚拟主机文件布局如下:
proxy_cache_path /var/cache/nginx levels=1:2 keys_zone=my_cache:10m max_size=100m inactive=6m;
upstream my_server {
server unix:/home/myuser/myproject/myfolder/myproject.sock fail_timeout=0;
}
server {
listen 80;
server_name example.com www.example.com;
# a bunch of 'location' blocks e.g. 'location /' or 'location @http_proxy_to_app', etc.
}
server {
listen 443 ssl;
server_name example.com www.example.com;
# SSL related stuff
# a bunch of 'location' blocks e.g. 'location /' or 'location @http_proxy_to_app', etc.
}
Run Code Online (Sandbox Code Playgroud)
在这种情况下,我如何将www 重定向到 no-www …
当使用 gunicorn 应用服务器(后端应用服务器和 nginx 之间典型的一对一映射)将 nginx 设置为反向代理时,我配置了以下内容:
upstream my_server {
server unix:/home/user/folder/app/app.sock fail_timeout=0;
}
location @https_proxy_to_app {
proxy_set_header X-Forwarded-Proto https;
include proxy_params;
proxy_redirect off;
proxy_pass http://my_server;
}
Run Code Online (Sandbox Code Playgroud)
许多关于该主题的文献都规定了这一点。虽然这有效,但我有几个问题。
首先(也是微不足道的),为什么需要包含http://在proxy_pass http://my_server;?
其次(更重要的是),我是否需要resolver为这种设置设置指令?我没有使用 AWS 的 Elastic Load Balancer,而且很多围绕该指令的处方 恰好都围绕着 AWS ELB。有人可以用外行的话解释为什么以及如何设置它吗?意外的服务器管理员在这里,所以需要专家的意见。resolver
请注意,我也在使用 OSCP 装订。