我看过各种配置示例,用于在 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 配置有问题。我升级到 nginx 1.9.6 来测试 http/2 但它在我的服务器上不起作用。
我使用了 ubuntu 14.04.2 LTS
这是 nginx -V 输出:
nginx version: nginx/1.9.6
built with OpenSSL 1.0.2d 9 Jul 2015
TLS SNI support enabled
configure arguments: --prefix=/etc/nginx --conf-path=/etc/nginx/nginx.conf --error-log-path=/var/log/nginx/error.log --http-client-body-temp-path=/var/lib/nginx/body --http-fastcgi-temp-path=/var/lib/nginx/fastcgi --http-log-path=/var/log/nginx/access.log --http-proxy-temp-path=/var/lib/nginx/proxy --http-scgi-temp-path=/var/lib/nginx/scgi --http-uwsgi-temp-path=/var/lib/nginx/uwsgi --lock-path=/var/lock/nginx.lock --pid-path=/var/run/nginx.pid --with-pcre-jit --with-debug --with-http_addition_module --with-http_auth_request_module --with-http_dav_module --with-http_geoip_module --with-http_gzip_static_module --with-http_image_filter_module --with-http_realip_module --with-http_stub_status_module --with-http_ssl_module --with-http_sub_module --with-http_xslt_module --with-http_v2_module --with-stream --with-ipv6 --with-mail --with-mail_ssl_module --with-openssl=/build/nginx-GFP362/nginx-1.9.6/debian/openssl-1.0.2d --add-module=/build/nginx-GFP362/nginx-1.9.6/debian/modules/nginx-auth-pam --add-module=/build/nginx-GFP362/nginx-1.9.6/debian/modules/nginx-echo --add-module=/build/nginx-GFP362/nginx-1.9.6/debian/modules/nginx-upstream-fair --add-module=/build/nginx-GFP362/nginx-1.9.6/debian/modules/nginx-dav-ext-module --add-module=/build/nginx-GFP362/nginx-1.9.6/debian/modules/nginx-cache-purge
Run Code Online (Sandbox Code Playgroud)
这是我的虚拟主机配置:
server {
listen 80;
server_name localhost;
return 301 https://$server_name$request_uri;
}
server { …Run Code Online (Sandbox Code Playgroud) 我有一个带有正则表达式匹配的 nginx 服务器定义,如下所示:
server_name ~^(?<vhost>[a-z0-9-]+)\.example\.com$;
root /var/www/example/$vhost;
access_log /var/log/nginx/$vhost.example-access.log;
Run Code Online (Sandbox Code Playgroud)
这一切都运行良好,但是,该域托管使用 fastcgi 和 PHP-FPM 的各种 PHP 项目,它们在$_SERVER以下位置接收如下值:
SERVER_NAME => "~^(?<vhost>[a-z0-9-]+)\.example\.com$"
HTTP_HOST => "myhost.example.com"
Run Code Online (Sandbox Code Playgroud)
如您所见,正则表达式模式被放入SERVER_NAME而不是它匹配的字符串中。这对我来说似乎有点问题,并且也代表了安全风险,因为它会泄露不必要的细节(在其他配置中,我匹配一组特定的名称而不是通配符)。
您可能会说“使用 HTTP_HOST 而不是 SERVER_NAME” - 如果只是这么简单 - 有些库希望 SERVER_NAME (毫不奇怪)包含服务器的名称。我真的看不到这种行为的良好用例。
我了解隐私扩展,并且您可以通过设置 use_tempaddr 来启用它们。不幸的是我没有找到不同设置的任何解释。我阅读的每篇文章都使用了 1 或 2 或引用了 kernel.org,而没有进一步解释。
Run Code Online (Sandbox Code Playgroud)use_tempaddr - INTEGER Preference for Privacy Extensions (RFC3041). <= 0 : disable Privacy Extensions == 1 : enable Privacy Extensions, but prefer public addresses over temporary addresses. > 1 : enable Privacy Extensions and prefer temporary addresses over public addresses. Default: 0 (for most devices) -1 (for point-to-point devices and loopback devices)
1但我还是不明白和之间的区别>1。公共 IP 与临时 IP 相比是什么?是用 DHCP 分配/静态设置的吗?或者是其他东西?
感谢您的帮助!
Perfect Forward Secrecy是 SSL/TLS 通信的重要增强,即使攻击者拥有私钥,也有助于防止捕获的 SSL 流量被解密。在 Web 服务器中支持它很容易,但它也适用于任何其他 SSL 上下文,例如用于 SMTP、POP3 和 IMAP 的邮件服务器。
这最近(2014 年 9 月)在德国达到了顶峰,数据保护机构已经开始检查和罚款在其邮件服务器上不支持 PFS 的组织,以及 Heartbleed 和贵宾犬漏洞。Web 浏览器中的 PFS 支持有些参差不齐,尽管所有主要浏览器都支持它 - 但我正在寻找邮件服务器和客户端上的 PFS 兼容性信息,理想情况下类似于SSL Labs的握手测试提供的信息,但用于邮件服务器。
任何人都可以提供或指出邮件服务器 PFS 兼容性的良好来源吗?
澄清一下,我不是要询问特定的服务器,而是要查看在各种不同服务器上进行此类测试的结果,例如,了解 Outlook 2003 不支持 ECDHE 或 Android 会很有用2 不允许大于 2048 位的 DH 参数(我不知道这些是否属实,它们只是示例)。这样做的好处是知道如果我选择禁用某些特定的密码,它可能会影响哪些客户端,就像 SSL 实验室测试为 Web 客户端显示的那样。
MySQL 的 Debian/Ubuntu 软件包中的 preinst 脚本将 MySQL 服务器的默认主目录设置为/nonexistent,大概是作为一种安全措施 - MySQL 服务器有自己的datadir路径,它像主目录一样使用。
但是,这样做的一个副作用是,当 MySQL 启动时,它会生成以下消息:
No directory, logging in with HOME=/
Run Code Online (Sandbox Code Playgroud)
我在这里担心的是,从安全的角度来看,这看起来并不好。它表明它会推动 MySQL 尝试在/; 显然,由于权限的原因,它应该无法做到这一点,但最好不要尝试。我已经看到通过创建主目录来“解决”这个问题的答案,但这似乎是荒谬的,因为这样做的全部意义在于它没有,尽管它可能是“安全的”,因为 MySQL 也被设置为/bin/false用作它的外壳.
将它设置为确实存在并且 MySQL 拥有所有权的东西是否更安全,例如/var/lib/mysql?
或者创建文件夹,但不允许 MySQL 写入?
有更清洁的解决方案吗?
证书颁发机构授权 (CAA) DNS 记录类型包括一个issue参数(也issuewild),该参数指定允许为您的域颁发证书的证书颁发机构的标识符。没关系,但有点模糊。
在您自己的 CAA 记录中设置值时,您应该如何找出您的 CA 的确切值?对于 letencrypt,他们在此处提供了一份文档,其中提到了他们的问题标识符是letsencrypt.org,并且在他们的认证实践声明第 4.2.1 节中也有记录。如果我检查证书,我可以看到其中的各种字段,但是,尽管有一些包含它,但没有一个与此字符串完全匹配。这似乎不是确保 CA 与 CAA 记录中的内容相匹配的严格或可靠的方法——例如,是什么阻止了它被匹配letsencrypt.org.evilcorp.com?
从人类的角度来看,这都是可行的,但机器可读性不是很强,并且是该 CA 独有的。
我也有来自 Comodo 的证书,我发现各种非权威来源说他们的 CAA 问题 ID 是comodoca.com(其他人说是comodo.com),但我还没有找到像 letencrypt 这样的官方文档。该comodoca.com字符串确实出现在我的证书的某些字段中,但不是出现在我希望能够可靠地找到它的上下文中 - 例如颁发者名称是COMODO ECC Domain Validation Secure Server CA (COMODO CA Limited from GB),CRL 是http://crl.comodoca.com/COMODOECCDomainValidationSecureServerCA.crl,OCSP URI 是http://ocsp.comodoca.com。
SSLMate 有一个CAA 记录生成器,它包括一个 CA 列表及其颁发者 ID …
这是对这个问题的跟进。
我有一个配置一堆 EC2 实例的游戏。根据需要,该hosts值为localhost(因为当它运行时没有主机),并且 play 组装一个名为 的新主机列表ec2hosts,并生成一个主机 ip 到主机名映射,因为这是该信息第一次也是唯一一次可用,并且使用set_fact. 这个主机列表然后是后续播放的主题。问题是我需要hostname_map在第二个播放中使用配置播放期间创建的字典,我看不到如何执行此操作。
这是第一场比赛:
- hosts: localhost
connection: local
gather_facts: False
tasks:
- name: Provision a set of instances
ec2:
key_name: marcus
instance_type: t2.micro
image: "{{ ami_id }}"
wait: true
exact_count: "{{ server_count }}"
count_tag:
Tutorial: "{{ tutorial_name }}"
instance_tags:
Tutorial: "{{ tutorial_name }}"
groups: ['SSH', 'Web']
register: ec2
- name: Add all instance public IPs to host group …Run Code Online (Sandbox Code Playgroud) 我有两个站点,我在 Ubuntu 12.04 上使用 PHP-FPM 5.4 从 apache 2.2 虚拟主机运行。到目前为止,我一直在使用服务器范围的(库存)mod_fastcgi 配置,但现在我想将其拆分为两个 FPM 池,以便我可以为每个池使用不同的 PHP 设置(例如,一个是开发站点,因此启用了错误显示) )。
我已经根据文档设置了两个具有不同名称和套接字位置的 FPM 池,禁用了全局 fastcgi 配置,将其复制到我的 vhost 中,并将其更改为指向每个 vhost 的不同池,如下所示:
<IfModule mod_fastcgi.c>
<FilesMatch \.php$>
SetHandler php-script
</FilesMatch>
Action php-script /php5.fcgi virtual
Alias /php5.fcgi /var/fastcgi/php5.fcgi
FastCGIExternalServer /var/fastcgi/php5.fcgi -socket /var/run/php5-fpm-www.sock
<Directory "/var/fastcgi">
Order allow,deny
<Files "php5.fcgi">
Order deny,allow
Deny from all
Allow from env=REDIRECT_STATUS
</Files>
</Directory>
</IfModule>
Run Code Online (Sandbox Code Playgroud)
实际上有 4 个虚拟主机,因为每个主机名都有常规和 SSL 风格,并且每一对都指向一个 FPM 池。
我遇到的问题是 apache 抛出一个错误说:
FastCgiExternalServer: redefinition of previously defined class "/var/fastcgi/php5.fcgi"
Run Code Online (Sandbox Code Playgroud)
这应该怎么做?
我有一个 nginx 配置,其中包含为所有请求提供服务的 CSP 标头。现在我需要在一个特定位置覆盖它(也恰好被重写)。我在想这样的事情:
server {
listen 80;
listen [::]:80;
server_name example.com;
root /var/www;
index index.php;
try_files $uri @rewrites;
add_header Content-Security-Policy "default-src 'self' ; script-src 'self' ; style-src 'self' 'unsafe-inline' ; img-src * 'self' data: ; font-src 'self' ; media-src * 'self' ; form-action 'self'";
location @rewrites {
rewrite ^/special/([0-9]*) /special.php?id=$1 last;
rewrite ^/foo/([a-z]+) /foo.php?method=$1 last;
}
location /special {
add_header Content-Security-Policy "default-src 'self' ; script-src 'self' 'unsafe-inline' ; style-src 'self' 'unsafe-inline' ; img-src * 'self' data: ; font-src …Run Code Online (Sandbox Code Playgroud) 我正在尝试在 OS X 上使用 Ansible 2.1.1.0 获得一些非常基本的东西。
我的目标都是 Ubuntu 16.04,所以我要做的第一件事就是让它安装 python2.7,因为没有它,即使 'ping' 也无法工作。
我在以下位置设置了这样的库存servers:
[dbservers]
192.168.x.x set_hostname=db
[webservers]
[servers:children]
dbservers
webservers
Run Code Online (Sandbox Code Playgroud)
这是我的游戏init.yml:
---
- hosts: servers
gather_facts: False
become: yes
tasks:
- name: apt-get update
raw: /usr/bin/apt-get update -qq
- name: Install python 2.7
raw: test -e /usr/bin/python || /usr/bin/apt-get install -q -y python2.7 python-simplejson
Run Code Online (Sandbox Code Playgroud)
我通过指定dbservers组来检查它是否选择了正确的主机,该组是servers(无论如何只有 1 个)的一个子集,这对我来说是正确的:
# ansible dbservers -i servers --list-hosts
hosts (1):
192.168.x.x
Run Code Online (Sandbox Code Playgroud)
我正在运行的命令是这样的:
# ansible dbservers -i …Run Code Online (Sandbox Code Playgroud) nginx ×4
ansible ×2
ipv6 ×2
security ×2
amazon-ec2 ×1
apache-2.2 ×1
caa-record ×1
email ×1
email-server ×1
ipv4 ×1
mod-fastcgi ×1
mysql ×1
openssl ×1
permissions ×1
php ×1
php-fpm ×1
privacy ×1
ssl ×1
tls ×1