nginx를 통해 새 하위 도메인을 추가하는 데 문제가 있습니다. 특히 문자 'a'로 시작하는 하위 도메인이 시스템에 추가되면 모든 하위 도메인이 충돌/차단됩니다. AWS EC2에서 호스팅되는 서버입니다.
우리는 다른 문제를 배제하기 위해 AWS 기술자와 많은 기술 지원을 통해 작업했으며 처음에는 SSL용 LetsEncrypt를 사용하고 있었고 letsencrypt가 하위 도메인에 제한이 있다는 것을 알게 되었습니다. 그래서 우리는 해당 문제를 해결하기 위해 다른 공급자를 통해 SSL 인증서를 구입했습니다. 밖으로. 그 이후로 우리는 서버에 약 6개의 다른 하위 도메인을 추가할 수 있었습니다. 우리는 기술자에게 설정이 모두 괜찮아 보이는 것을 확인했습니다. 문자 'a'로 시작하는 하위 도메인을 추가할 수 없다는 점은 그들과 우리 모두를 당황하게 만들었습니다.
모든 하위 도메인은 '/var/etc/nginx/sites-available'에 동일한 구성 설정을 갖습니다(하위 도메인 이름 제외).
upstream abc_app {
server unix:///var/run/puma/abc_app.sock;
}
server {
listen 80;
server_name abc.domain.com.au www.abc.domain.com.au;
return 301 https://abc.domain.com.au ;
}
server {
listen 443 ssl;
server_name www.abc.domain.com.au;
return 301 https://abc.domain.com.au ;
}
server {
listen 443 ssl;
server_name abc.domain.com.au;
ssl on;
ssl_certificate /etc/letsencrypt/live/setls.com.au/fullchain.pem; # managed by Certbot
ssl_certificate_key /etc/letsencrypt/live/setls.com.au/privkey.pem; # managed by Certbot
include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot
location / {
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto https;
proxy_set_header Host $http_host;
proxy_redirect off;
proxy_connect_timeout 6000;
proxy_send_timeout 6000;
proxy_read_timeout 6000;
proxy_pass http://abc_app;
}
location ~ "^/assets/" {
root /var/app/abc.domain.com.au/current/public;
gzip_static on;
expires max;
add_header Cache-Control public;
}
}
server {
listen 80;
server_name abc.domain.com www.abc.domain.com;
return 301 https://abc.domain.com ;
}
server {
listen 443 ssl;
server_name www.abc.domain.com;
return 301 https://abc.domain.com ;
}
server {
listen 443 ssl;
server_name abc.domain.com;
ssl on;
ssl_certificate /etc/letsencrypt/live/domain.com/fullchain.pem; # managed by Certbot
ssl_certificate_key /etc/letsencrypt/live/domain.com/privkey.pem; # managed by Certbot
include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot
location / {
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto https;
proxy_set_header Host $http_host;
proxy_redirect off;
proxy_connect_timeout 6000;
proxy_send_timeout 6000;
proxy_read_timeout 6000;
proxy_pass http://arc_app;
}
location ~ "^/assets/" {
root /var/app/abc.domain.com.au/current/public;
gzip_static on;
expires max;
add_header Cache-Control public;
}
}
또한 nginx 구성은 다음과 같습니다.
pid /run/nginx.pid;
include /etc/nginx/modules-enabled/*.conf;
events {
worker_connections 1024;
#worker_connections 768;
# multi_accept on;
}
http {
##
# Basic Settings
##
sendfile on;
tcp_nopush on;
tcp_nodelay on;
keepalive_timeout 65;
types_hash_max_size 2048;
# server_tokens off;
client_max_body_size 8m;
# changed from 128 to 256 on 2018-12-22 by MM
server_names_hash_bucket_size 256;
# server_name_in_redirect off;
include /etc/nginx/mime.types;
default_type application/octet-stream;
# this is now taken care of in /etc/letsencrypt/options-ssl-nginx.conf
#ssl_protocols TLSv1.1 TLSv1.2;
##
# Logging Settings
##
access_log /var/log/nginx/access.log;
error_log /var/log/nginx/error.log;
##
# Gzip Settings
##
gzip on;
gzip_disable "msie6";
# gzip_vary on;
# gzip_proxied any;
# gzip_comp_level 6;
# gzip_buffers 16 8k;
# gzip_http_version 1.1;
# gzip_types text/plain text/css application/json application/x-javascript text/xml application/xml application/xml+rss text/javascript;
include /etc/nginx/conf.d/*.conf;
include /etc/nginx/sites-available/*;
}