AWS EC2 - nginx - 带有 aws 公共 DNS 名称的 Proxypass

AWS EC2 - nginx - 带有 aws 公共 DNS 名称的 Proxypass

我想代理我的公共 DNS 名称ec2-someiphere.us-west-2.compute.amazonaws.comhttps://api.example.com我的 nginx.conf 中有以下内容:

    server {
            listen 80;
            listen [::]:80;
            server_name api.example.com ec2-someiphere.us-west-2.compute.amazonaws.com 1.1.1.1;
            return 301 https://$server_name$request_uri;
    }

    server {
            listen 443 ssl http2 default_server;
            listen [::]:443 ssl http2 default_server;
            server_name api.example.com;
            location / {
                    proxy_pass http://localhost:8080;
            }
            ssl_certificate /etc/letsencrypt/live/api.example.com/fullchain.pem;
            ssl_certificate_key /etc/letsencrypt/live/api.example.com/privkey.pem;
            ssl_ciphers EECDH+CHACHA20:EECDH+AES128:RSA+AES128:EECDH+AES256:RSA+AES256:EECDH+3DES:RSA+3DES:!MD5;
            ssl_session_cache shared:SSL:5m;
            ssl_session_timeout 1h;
            add_header Strict-Transport-Security “max-age=15768000” always;
    }

当我启动 nginx 时,它会产生错误。(它不喜欢ec2-someiphere.us-west-2.compute.amazonaws.com)如果我没有ec2-someiphere.us-west-2.compute.amazonaws.com在那里,当有人点击它时它不会重定向,而是显示默认的 nginx 页面而不是重定向。有什么办法吗?

编辑:使用长 DNS 名称时我收到的错误是:

-- Unit nginx.service has begun starting up.
Sep 16 03:32:55 ip-172-31-48-100 nginx[7106]: nginx: [emerg] could not 
build server_names_hash, you should increase 
server_names_hash_bucket_size: 64
Sep 16 03:32:55 ip-172-31-48-100 nginx[7106]: nginx: configuration 
file /etc/nginx/nginx.conf test failed

我认为这是因为 DNS 名称太长??

答案1

如果您用 替换第一个服务器块中的主机名_,它将成为所有端口 80 命中的默认块,并且您已将重定向 URL 设置为动态。

server {
        listen 80;
        listen [::]:80;
        server_name _;
        return 301 https://$server_name$request_uri;
}

如果不合适,请逐字发布错误信息。

答案2

我回答了自己的问题。事实证明,服务器名称的最大长度是有限的,但可以编辑。

通过在 http 级别放置:server_names_hash_bucket_size 128它将阻止错误。希望这不会对性能造成问题。

相关内容