AWS는 Apache를 통해 헤더를 설정할 수 없습니다.

AWS는 Apache를 통해 헤더를 설정할 수 없습니다.

Amazon Linux 2 AMI EC2 인스턴스의 Apache에서 HTTP 응답 헤더를 보내려고 합니다. 원래는 이 작업을 시도 httpd.conf하고 몇 가지 변형을 시도했습니다.

httpd.conf

Header always set X-Frame-Options "SAMEORIGIN"

그러나 헤더가 설정되지 않았습니다. 그래서 아마도 어딘가에서 재설정될 것이라고 생각했지만 최소한 .htaccess설정할 수 있어야 했기 때문에 몇 가지 변형을 시도했습니다...

.htaccess

Header set ApacheFoo ApacheBar
Header add Strict-Transport-Security "max-age=31104000; includeSubdomains"

그러나 이 헤더 중 어느 것도 설정되지 않았습니다.

하지만 PHP를 사용하여 헤더를 설정하면 제대로 작동합니다.

index.php:

<?php
header("phpfoo: phpbar");
die(print_r(headers_list(), 1));

Chrome의 DevTools에 헤더가 표시 되지만 phpfoo: phpbarApache에서 직접 설정된 헤더는 하나도 설정되지 않았습니다.

.htaccess솔루션은 내 로컬 Windows+Apache 설정에서는 잘 작동하지만 AWS에서는 작동하지 않습니다. 따라서 문제가 해당 문제에 국한된 것으로 가정하고 이 플랫폼에 대해 알아야 할 특이한 점이 있는지 궁금합니다.

더 많은 정보

헤더 모듈이 확실히 로드되었습니다. 실행하면 sudo httpd -S(이 명령을 실행하는 데 사용해야 sudo하거나 SSL에 필요한 파일에 액세스하는 데 권한 문제가 있는 경우 .pemApache가 제대로 시작되므로 해당 권한이 부여되면 문제가 되지 않는다고 가정합니다) 출력은 다음과 같습니다. (호스트별 정보는 별표로 대체됨):

VirtualHost configuration:
*:80                   *.com (/etc/httpd/conf/httpd.conf:44)
*:443                  is a NameVirtualHost
         default server ip-*-*-*-*.us-east-2.compute.internal (/etc/httpd/conf.d/ssl.conf:56)
         port 443 namevhost ip-*-*-*-*.us-east-2.compute.internal (/etc/httpd/conf.d/ssl.conf:56)
         port 443 namevhost *.com (/etc/httpd/conf/httpd-le-ssl.conf:2)
                 alias www.*.com
ServerRoot: "/etc/httpd"
Main DocumentRoot: "/var/www/html"
Main ErrorLog: "/etc/httpd/logs/error_log"
Mutex authdigest-opaque: using_defaults
Mutex watchdog-callback: using_defaults
Mutex proxy-balancer-shm: using_defaults
Mutex rewrite-map: using_defaults
Mutex ssl-stapling-refresh: using_defaults
Mutex authdigest-client: using_defaults
Mutex lua-ivm-shm: using_defaults
Mutex ssl-stapling: using_defaults
Mutex proxy: using_defaults
Mutex authn-socache: using_defaults
Mutex ssl-cache: using_defaults
Mutex default: dir="/run/httpd/" mechanism=default
Mutex mpm-accept: using_defaults
Mutex cache-socache: using_defaults
PidFile: "/run/httpd/httpd.pid"
Define: DUMP_VHOSTS
Define: DUMP_RUN_CFG
User: name="apache" id=48
Group: name="apache" id=48

답변1

지금까지 나의 최선이자 유일한 대답은 Amazon Linux 2를 포기하는 것입니다.

헤더를 설정하고 문제를 해결할 수 있기를 바라면서 Nginx 역방향 프록시를 설정하려고 시도했지만 실패한 후(Amazon Linux 2에는 make빌드에 필요한 유틸리티가 부족한 것 같습니다 mod_rpaf. 이것이 마지막 지푸라기였습니다), 저는 새로운 프록시를 만들었습니다. Ubuntu를 사용하여 인스턴스를 만들고 Amazon Linux 2에서 설정한 모든 것을 설정하는 긴 프로세스를 시작했습니다. 그러나 Ubuntu에서는 상대적으로 더 쉽고 혼란스럽지 않았으며 일반적으로 작업할 수 있는 유용한 자습서가 훨씬 더 많았습니다.

결국 Nginx를 보너스로 스택에 추가하여 Apache에 대한 역방향 프록시를 사용할 수 있게 되었고 이제 Apache에서 헤더를 설정하는 데 전혀 문제가 없습니다.

이 문제를 겪고 있거나 AWS를 사용하여 Apache 웹 서버를 실행하는 것을 고려하고 있는 다른 사람들에게 이 경험에서 얻은 조언은 다음과 같습니다.Amazon Linux 2를 사용하지 마십시오!

Apache에서 헤더를 설정하는 것은 단순히 작동하지 않는 것처럼 보일 뿐만 아니라(항상 작동하는 PHP에 의존하지 않는 일부 최신 보안 기능을 활성화하는 데 핵심임) 일반적으로 Ubuntu 빌드를 사용하면 모든 것이 훨씬 더 쉽고 유연해집니다. Ubuntu 빌드에 ​​대한 좋은 AWS 문서는 없지만 나머지 인터넷에서 다루었으며 Amazon Linux 2 자습서의 AWS 관련 부분(보안 그룹, 탄력적 IP 및 경로 53)을 적용할 수 있습니다.

관련 정보