我想代理我的公共 DNS 名称ec2-someiphere.us-west-2.compute.amazonaws.com
,https://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
它将阻止错误。希望这不会对性能造成问题。