Server/Linux
[nginx] autoindex로 디렉토리 리스팅 하였을 때 cors 에러
밍글링글링
2023. 4. 10. 15:22
728x90
server {
server_name *;
location / {
root /;
autoindex on;
}
listen 443 ssl; # managed by Certbot
ssl_certificate /etc/letsencrypt/live/*/fullchain.pem; # managed by Certbot
ssl_certificate_key /etc/letsencrypt/live/*/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
}
server {
#if ($host = *) {
# return 301 https://$host$request_uri;
#} # managed by Certbot
listen 80;
server_name *;
#return 404; # managed by Certbot
location / {
root /;
autoindex on;
}
}
보안적인 이슈 사항의 정보가 있기에, 유도리 있게 위와 같이 변경하였다.
위 내용은 nginx의 conf 파일이다. ssl 적용이 되어있는 모습인데,
ssl을 적용하고 안뜨던 cors에러가 뜬 경우이다.
이 경우 spring으로 컨테이너가 돌거나 햇다면, 소스 단에서 cors 에러를 처리해주었으면 좋았을려만,
nginx에서 디렉토리 리스팅을 하여서, nginx에서 처리해야하였다.
이 경우에는 간단하게 header를 추가하면 된다.
필자의 경우에는
add_header 'Cache-Control' 'public';
add_header 'X-Frame-Options' 'ALLOW-FROM *';
add_header 'Access-Control-Allow-Origin' '*';
add_header 'Access-Control-Allow-Credentials' 'true';
add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS';
' location / ' 안에 위 코드의 내용을 집어넣어서 전역에 허용하였다.
필자의 경우 root가 ' / ' 로 되었지만, 실 경로가 아니다.
전체 conf 파일의 내용은 아래와 같다.
server {
server_name *;
location / {
add_header 'Cache-Control' 'public';
add_header 'X-Frame-Options' 'ALLOW-FROM *';
add_header 'Access-Control-Allow-Origin' '*';
add_header 'Access-Control-Allow-Credentials' 'true';
add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS';
root /;
autoindex on;
}
listen 443 ssl; # managed by Certbot
ssl_certificate /etc/letsencrypt/live/*/fullchain.pem; # managed by Certbot
ssl_certificate_key /etc/letsencrypt/live/*/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
}
server {
#if ($host = *) {
# return 301 https://$host$request_uri;
#} # managed by Certbot
listen 80;
server_name *;
#return 404; # managed by Certbot
location / {
add_header 'Cache-Control' 'public';
add_header 'X-Frame-Options' 'ALLOW-FROM *';
add_header 'Access-Control-Allow-Origin' '*';
add_header 'Access-Control-Allow-Credentials' 'true';
add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS';
root /;
autoindex on;
}
}
728x90