我想知道在 ssllabs.com 的每个类别上获得 100% 需要哪些步骤。我知道这可能会导致旧系统出现问题,但我不在乎。
我的letsencrypt.org 证书使用 4096 位。这是我使用以下配置可以获得的最好成绩:
SSLCipherSuite AES256+EECDH:AES256+EDH:!aNULL
SSLHonorCipherOrder on
SSLProtocol all -TLSv1.1 -TLSv1 -SSLv3 -SSLv2
Run Code Online (Sandbox Code Playgroud)
我在某处读到可以使用预先生成的 dhparam 文件改进密钥交换。
所以我使用openssl dhparam -out dhparam.pem 4096(这花了大约一个小时)生成了这个文件,并将它添加到我的 apache 配置中使用
SSLOpenSSLConfCmd DHParameters "/etc/ssl/certs/dhparam.pem"
Run Code Online (Sandbox Code Playgroud)
但这会导致与以前相同的分数。那么我在这里错过了什么?
conf-enabled 和 sites-enabled(或者 conf-available 和 sites-available,如果你想这样想的话)有什么区别?
什么时候文件应该放在一个而不是另一个?
他们是否以不同的方式或在不同的时间读入 apache2?
我正在编辑一个.htaccess文件..
在 RewriteRules 的 RewriteCondition 中,HTTPS_HOST似乎只匹配通过https://协议 (ssl)访问的 url 。我在某处的文档中看到它是一个 T/F 变量,指示是否使用安全协议访问了 url。
然而,我在上文档的麻烦发现是否HTTP_HOST只匹配http://协议,或者如果它有效地匹配//相对的协议,这意味着它符合双方 http:// 和 https://。
有人可以以一种或另一种方式确认,或向我指出此信息的明确来源吗?
此外,如果HTTP_HOST匹配两个协议变体,过滤仅 http://协议匹配的最佳方法是什么?
例子:
<IfModule mod_rewrite.c>
RewriteEngine on
Rewritecond %{HTTP_HOST} ^\/\.(?!some-url).*$
RewriteRule (.*) https://www.example.com/$1 [R=301,L,NC]
</IfModule>
Run Code Online (Sandbox Code Playgroud)
相比之下:
...
Rewritecond %{HTTPS_HOST} ^\/\.(?!some-url).*$
...
Run Code Online (Sandbox Code Playgroud)
编辑:实验表明,HTTP_HOST 这似乎与两种协议都匹配,而HTTPS_HOST仅当协议或 url 以https://.
.
(注重:apache2标签
。TBH,我不能肯定我运行的是什么版本的Apache将尝试找出,这样我就可以装上适当的标签..
我想httpd -v,apache -v, …
我正在运行 Apache/2.4.29 (Ubuntu)。
我只有一个域名。
我想将不同的站点映射到域名后的不同路径。
例如:
mydomain.com/test001映射到/var/www/test001/public
mydomain.com/test002映射到/var/www/test002/public
我已经尝试了许多不同的虚拟主机配置,但没有一个起作用。
谁能告诉我虚拟主机的正确语法吗?
编辑
我已经根据@JoeSlav给出的答案更改了我的配置,
现在这是我的虚拟主机配置
<VirtualHost *:80>
ServerName test06.com
ServerAlias www.test06.com
DocumentRoot /var/www/test06/public
Alias /test03/ /var/www/test03/public
Alias /test04/ /var/www/test04/public
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
Run Code Online (Sandbox Code Playgroud)
当我请求http://test06.com/test03/时,我得到目录列表页面。我可以在列表中看到我的索引页,但如果尝试单击它(或者在浏览器上写下完整路径),我会收到以下消息:
“未找到”
“未找到请求的 URL /test03/index.html该服务器”
一些附加信息:
-/var/www/test06/public/index.html如果我询问 test06.com,浏览器会正确显示;
- 我通过主机文件将 test06.com 映射到我的服务器 IP。
我们有一个带有巨大 disk_cache(> 500.000 个条目,> 50 GB 磁盘空间使用)的 Apache 设置。缓存每天增长 16 GB。
我的问题是缓存的增长速度几乎与从缓存文件系统中删除文件和目录的速度一样快!
缓存分区是 iSCSI 存储上的 ext3 文件系统(100GB,“-t news”)。Apache 服务器(充当缓存代理)是一个 VM。disk_cache 配置为 CacheDirLevels=2 和 CacheDirLength=1,并包括变体。典型的文件路径是“/htcache/B/x/i_iGfmmHhxJRheg8NHcQ.header.vary/A/W/oGX3MAV3q0bWl30YmA_A.header”。
当我尝试调用htcacheclean来驯服缓存(非守护进程模式,“htcacheclean-t -p/htcache -l15G”)时,IOwait 正在经历几个小时。没有任何可见的动作。只有在几个小时后,htcacheclean 才开始从缓存分区中删除文件,这需要几个小时。(2009年Apache邮件列表中提出了类似的问题,没有解决:http : //www.mail-archive.com/dev@httpd.apache.org/msg42683.html)
高 IOwait 会导致 Web 服务器的稳定性出现问题(连接到 Tomcat 后端服务器的桥有时会停止)。
我想出了我自己的修剪脚本,它从缓存的随机子目录中删除文件和目录。才发现脚本的删除率只是略高于缓存增长率。该脚本需要大约 10 秒来读取 a 子目录(例如 /htcache/B/x)并释放大约 5 MB的磁盘空间。在这 10 秒内,缓存又增加了 2 MB。与 htcacheclean 一样,当连续运行修剪脚本时,IOwait 上升到 25%。
任何的想法?
这是特定于(相当慢的)iSCSI 存储的问题吗?
我应该为巨大的 disk_cache 选择不同的文件系统吗?分机2?ext4?
这种场景有没有内核参数优化?(我已经尝试了截止日期调度程序和较小的 …
我需要在必须更新到 10.13 的 Mac 上运行 PHP 5.6。所以我重新安装了 5.6,验证了它的位置,并将其添加到 httpd.conf:
LoadModule php5_module libexec/apache2/libphp5.so
Run Code Online (Sandbox Code Playgroud)
...并确保 PHP 7 的行仍被注释掉。重新启动 Apache,Apache 启动正常,没有错误,并且可以工作,但没有 PHP!因此,作为测试,我注释掉了 PHP 5 行并取消了 PHP 7 行的注释:
LoadModule php7_module libexec/apache2/libphp7.so
Run Code Online (Sandbox Code Playgroud)
...重新启动Apache,它再次工作正常,但仍然没有PHP!所以我查询了 httpd 二进制文件以确保我正在编辑正确的 httpd.conf 并且我是。两个版本的 PHP 都不会运行,但在 Apache 启动时也不会导致错误。(当我说 Apache 运行但 PHP 不运行时,我的意思是浏览器显示:
<?php phpinfo(); ?>
Run Code Online (Sandbox Code Playgroud)
...没有渲染它。帮助?我已经没有办法让 PHP 5.6 运行起来了。
我从我目前工作的前任员工(他离开去另一份工作)那里继承了一个非常新的 magento 配置。最初的 Magento 是使用 v2.1.8 设置的,但由于项目的需求/要求发生了变化,我不得不多次更新/升级安装。因此,我不一定拥有安装时的所有原始文件(我备份了一些,但在多次更改后,我不得不削减我备份的内容)并且不一定可以询问最初的人安装/配置了他所做的。
最初的设置只是 apache2 上带有 https 的独立 magento-CE。部分问题是我现在使用 Magento 建议并设置 apache 在后台使用 varnish 缓存执行 http,而 nginx 处理实际的 https 内容。
第一个问题发生在 apache 服务器一夜之间神秘关闭时,没有任何粉丝关注。错误日志中仅收到一条 SIGTERM 消息,表明某些东西正在将其关闭。我追踪到一个 cron 作业,它运行了 letencrypt 的续订脚本,该脚本试图通过 apache2 验证证书(不再执行 https 或在端口 443 上进行通信)
我现在需要的是有关如何完成迁移设置的信息,以便更新脚本将与 nginx 而不是 apache2 一起使用。我能找到的所有关于设置 LetEncrypt 的说明似乎都假设您尚未执行任何操作并且还没有证书。但我确实有证书,只是没有 nginx 和 LetsEncrypt 正确运行更新所需的任何东西。
我修改了 /etc/letsencrypt/renewal/myhost.conf 以使用 nginx 而不是 apache 作为身份验证器。(我还修改了“安装程序”行,但不确定是否需要它,因为它是安装在 apache2 下的)
我在服务器根目录中重新创建了一个 .well-known/acme-challenge/test 文件,并添加了目录和位置问题,并确认可以从端口 8080 上的 http 上的 apache 服务器以及通过端口 443 上的 nginx 上的缓存访问它https。(返回“成功”作为内容)
但是当我运行 certbot 来测试续订时(根据我在各个说明页面中看到的建议),它失败了:
# certbot renew --pre-hook "service …Run Code Online (Sandbox Code Playgroud) 出于某种原因,当我尝试保存文件(由 PHP 在 下生成/www/appname/module)时 - 它保存在
/tmp/systemd-private-015eb2e9f67b4eef862c68e99fe0ba30-apache2.service-9h6i08
当瞄准文件保存在
/tmp/somename
文件保存在
/tmp/systemd-private-015eb2e9f67b4eef862c68e99fe0ba30-apache2.service-9h6i08/tmp/somename.
如何禁用此功能并“定期”将文件保存到 /tmp 目录?
无论如何,此默认功能的目的是什么?
为了支持自动 LetsEncrypt 证书续订,certbot 使用--apache处理程序。
例如
certbot renew --apache
Run Code Online (Sandbox Code Playgroud)
该处理程序在 Apache 服务器上为*/.well-known/acme-challenge/安装一个临时 VirtualHost ,以验证续订。
问题是,如果现有虚拟服务器使用安装在 http 服务器根目录上的 HTTPS 和 Django over WSGI,则此机制不起作用。
临时 VirtualHost 无法捕获 URL,因此 Django 尝试为请求提供服务(但失败),因为该 URL 不在其 URL 列表中。
我在 Ubuntu 20.04.2 LTS 上运行 Apache2 网络服务器。我注意到我access.log有几行只是简单地写combine在上面,没有关于请求或其他任何信息。还有其他的线路中的access.log那些不说combine,而且这样做有关于请求信息。
这是我的示例access.log:
combine
combine
combine
45.129.136.74 - - [26/Aug/2021:00:17:23 -0400] "\x03" 400 0 "-" "-"
45.129.136.74 - - [26/Aug/2021:00:17:23 -0400] "\x03" 400 0 "-" "-"
combine
192.241.204.78 - - [26/Aug/2021:00:23:55 -0400] "GET / HTTP/1.1" 200 546 "-" "Mozilla/5.0 zgrab/0.x"
84.54.153.88 - - [26/Aug/2021:00:27:54 -0400] "GET / HTTP/1.1" 200 621 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_6) AppleWebKit/601.7.7 (KHTML, like …Run Code Online (Sandbox Code Playgroud) apache2 ×10
lets-encrypt ×2
.htaccess ×1
apache-2.4 ×1
cache ×1
certbot ×1
django ×1
ext3 ×1
https ×1
log-files ×1
logging ×1
mod-rewrite ×1
nginx ×1
performance ×1
php5 ×1
rewrite ×1
ssl ×1
web-server ×1
wsgi ×1