【问题标题】:How to hide nginx version in elastic beanstalk如何在弹性 beantalk 中隐藏 nginx 版本
【发布时间】:2015-10-14 17:28:26
【问题描述】:

我在平台 Ruby 2.2(Passenger Standalone)上运行一个应用程序,并希望从 HTTP 标头中隐藏 nginx 版本。我没有使用 Docker。其他 Stack Overflow 答案建议将此添加到我的 .ebextensions

00_nginx.conf:

files:
  "/etc/nginx/conf.d/proxy.conf":
    mode: "000644"
    content: |
      http {
        server_tokens off;
        passenger_show_version_in_header off;
      }

但是,这没有任何作用。我应该把文件放在不同的地方吗?

【问题讨论】:

    标签: ruby amazon-web-services nginx amazon-elastic-beanstalk


    【解决方案1】:

    AWS Elastic Beanstalk with Ruby 2.2 + Passenger Standalone 1.4.3 不使用(原始)Nginx 1.6.2。它使用Passenger Standalone 1.4.3服务器,它是Nginx 1.6.2的修改版本。

    所以,如果你想修改 Nginx 配置,你必须编辑Passenger Standalone 配置。乘客独立配置位于$(passenger-config about resourcesdir)/templates/standalone/config.erb

    您可以使用以下.ebextensions

    00-passenger.config

    files:
      "/home/ec2-user/hide_passenger_version.sh" :
        mode: "000777"
        owner: ec2-user
        group: ec2-user
        content: |
          #!/bin/bash
          CONFIG_FILE=$(/opt/rubies/ruby-2.2.2/bin/passenger-config about resourcesdir)/templates/standalone/config.erb
          if ! grep -q "server_tokens off;" $CONFIG_FILE; then
            sed -i '/http {/a\
              server_tokens off;\
              passenger_show_version_in_header off;' $CONFIG_FILE
          fi
    
    commands:
      00-hide-passenger-version:
        command: sh /home/ec2-user/hide_passenger_version.sh
        cwd: /home/ec2-user
    

    上述配置将检查 Passanger 配置中的 server_tokens off;。如果server_tokens off; 未设置,我们在http { 下方添加server_tokens off;passenger_show_version_in_header off;(附加)http {

    之前

    $ curl -I http://itmustbeasecret.elasticbeanstalk.com/hello
    
    HTTP/1.1 200 OK
    Content-Length: 12
    Content-Type: text/html;charset=utf-8
    Date: Sat, 25 Jul 2015 14:21:27 GMT
    Server: nginx/1.6.2 + Phusion Passenger 4.0.59
    Status: 200 OK
    X-Content-Type-Options: nosniff
    X-Frame-Options: SAMEORIGIN
    X-Powered-By: Phusion Passenger 4.0.59
    X-XSS-Protection: 1; mode=block
    Connection: keep-alive
    

    之后

    $ curl -I http://itmustbeasecret.elasticbeanstalk.com/hello
    
    HTTP/1.1 200 OK
    Content-Length: 12
    Content-Type: text/html;charset=utf-8
    Date: Sat, 25 Jul 2015 14:03:23 GMT
    Server: nginx + Phusion Passenger
    Status: 200 OK
    X-Content-Type-Options: nosniff
    X-Frame-Options: SAMEORIGIN
    X-Powered-By: Phusion Passenger
    X-XSS-Protection: 1; mode=block
    Connection: keep-alive
    

    注意:上述配置仅影响乘客是否(重新)启动。因此,您需要终止您当前的实例。

    【讨论】:

    • 您还可以在应用.ebextensions/00-passenger.config 后通过创建另一个.ebextentions 脚本来强制Passenger 重新启动。
    • 谢谢你,爱德华。这是第一次完美的工作。
    • @EdwardSamuel -- 您能否举例说明如何通过创建另一个.ebextensions 脚本(无需终止实例)来使此更改生效?
    • 您可以使用相同的配置创建一个全新的环境,因此它不会影响您的生产环境。
    猜你喜欢
    • 2014-01-26
    • 2019-04-30
    • 1970-01-01
    • 1970-01-01
    • 2015-05-22
    • 2016-04-09
    • 1970-01-01
    • 2013-02-11
    • 2021-11-20
    相关资源
    最近更新 更多