我在 apache.conf 中执行了除 GET、POST 和 OPTIONS 之外的方法的阻塞,当我尝试通过 IP 运行服务器时阻塞工作。
但是在子域上配置相同的阻止(通过可用的站点)时,不会发生这种阻止。我做错了什么?
apache2.conf
<Directory /var/www/>
Options None
AllowOverride None
Require all granted
<LimitExcept GET POST OPTIONS>
Require all denied
</LimitExcept>
</Directory>
站点可用/子域.example.com.conf
<VirtualHost *:80>
ServerName subdomain.example.com
ServerAlias subdomain.example.com
DocumentRoot /var/www/html/subdomain.example.com
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
Header append X-FRAME-OPTIONS "SAMEORIGIN"
RewriteCond %{REQUEST_URI} !^/\.well\-known/acme\-challenge/
RewriteRule ^(.*)$ https://%{HTTP_HOST}$1 [R=301,L]
</VirtualHost>
<VirtualHost *:443>
SSLEngine on
SSLCertificateFile /certs/example.crt
SSLCertificateKeyFile /certs/example.key
SSLCertificateChainFile /certs/example-intermediary.crt
Protocols h2 http/1.1
Header always set Strict-Transport-Security "max-age=31536000"
Header append X-FRAME-OPTIONS "SAMEORIGIN"
<Directory /var/www/html/subdomain.example.com>
Options None
AllowOverride None
Require all granted
<LimitExcept GET POST OPTIONS>
Require all denied
</LimitExcept>
</Directory>
ServerName subdomain.example.com
ServerAlias subdomain.example.com
DocumentRoot /var/www/html/subdomain.example.com
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
这个锁不起作用,因为在执行带有 PUT、DELETE、LOCK 等的请求时,页面内容正常返回。
您应该停止使用那种复杂的旧方法来限制方法。
加载 mod_allowmehtods.so 并以更简单的方式定义您想要允许的内容。
除非您在子目录中用其他东西覆盖它,否则这将在服务器范围内工作。尝试让我们知道。