반응형
AWS에 설치하기 전에 yum 버전을 최신으로 업데이트 해준다
sudo yum update -y
nginx 를 설치하려고 하면 다음과 같은 메세지가 나온다.
Loaded plugins: extras_suggestions, langpacks, priorities, update-motd
amzn2-core | 3.7 kB 00:00:00
No package nginx available.
Error: Nothing to do
nginx is available in Amazon Linux Extra topic "nginx1"
To use, run
# sudo amazon-linux-extras install nginx1
Learn more at
https://aws.amazon.com/amazon-linux-2/faqs/#Amazon_Linux_Extras
설명대로 amazon-linux-extras 를 우선 설치한다.
sudo amazon-linux-extras install nginx1
설치가 완료되면 다음 명령어로 nginx 를 설치한다.
sudo yum install nginx
nginx 를 구동한다
sudo systemctl start nginx
# 멀티도메인 설정
기본설정에 있는 server를 주석처리하고, 특정폴더에 도메인 이름의 파일을 생성하고 upstream으로 연결한다. 우선 설정파일이 있는 곳으로 이동한다.
cd /etc/nginx/
추후 멀티도메인 관련 설정은 site-enable 폴더 안에 넣으려 한다. 폴더를 생성한다.
sudo mkdir site-enable/
기본 설정파일인 site-enable 을 수정한다.
파일을 다음과 같이 수정한다.
sudo vi nginx.conf
아래는 수정전
http {
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
access_log /var/log/nginx/access.log main;
sendfile on;
tcp_nopush on;
tcp_nodelay on;
keepalive_timeout 65;
types_hash_max_size 4096;
include /etc/nginx/mime.types;
default_type application/octet-stream;
# Load modular configuration files from the /etc/nginx/conf.d directory.
# See http://nginx.org/en/docs/ngx_core_module.html#include
# for more information.
include /etc/nginx/conf.d/*.conf;
server {
listen 80;
listen [::]:80;
server_name _;
root /usr/share/nginx/html;
# Load configuration files for the default server block.
include /etc/nginx/default.d/*.conf;
error_page 404 /404.html;
location = /40x.html {
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
}
}
# Settings for a TLS enabled server.
#
# server {
# listen 443 ssl http2;
# listen [::]:443 ssl http2;
# server_name _;
# root /usr/share/nginx/html;
#
# ssl_certificate "/etc/pki/nginx/server.crt";
# ssl_certificate_key "/etc/pki/nginx/private/server.key";
# ssl_session_cache shared:SSL:1m;
# ssl_session_timeout 10m;
# ssl_ciphers PROFILE=SYSTEM;
# ssl_prefer_server_ciphers on;
#
# # Load configuration files for the default server block.
# include /etc/nginx/default.d/*.conf;
#
# error_page 404 /404.html;
# location = /40x.html {
# }
#
# error_page 500 502 503 504 /50x.html;
# location = /50x.html {
# }
# }
}
수정 후
http {
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
access_log /var/log/nginx/access.log main;
sendfile on;
tcp_nopush on;
tcp_nodelay on;
keepalive_timeout 65;
types_hash_max_size 4096;
include /etc/nginx/mime.types;
default_type application/octet-stream;
# Load modular configuration files from the /etc/nginx/conf.d directory.
# See http://nginx.org/en/docs/ngx_core_module.html#include
# for more information.
include /etc/nginx/conf.d/*.conf;
include site-enable/*;
}
사이트 설정을 위해 site-enable 폴더 내 파일을 만든다
mkdir /etc/nginx/site-enable
cd /etc/nginx/site-enable
도메인 이름을 같게하는게 추후 유지보수 하는데 편하다
sudo vim [도메인명]
파일 내 수정.
SSL은 우선 주석해두었다.
upstream [도메인명] {
least_conn;
# 실제 IP 서버
server [서버IP]:[포트번호];
}
server {
# nginx 서버가 8080 을 감지하도록 설정
listen 80;
server_name [도메인명];
# 8080 포트로 들어오는 모든 요청을 '[도메인명]' 로 보냄
location / {
proxy_pass http://[도메인명];
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
location ~* \.(jpg|jpeg|gif|png)$ {
root /ediya/files;
}
}
# server {
# listen 443 ssl;
# server_name [도메인명];
#
# ssl_certificate /etc/nginx/https/www.spinormedia.com_cert.crt;
# ssl_certificate_key /etc/nginx/https/www.spinormedia.com_key.key;
#
# location / {
# proxy_pass http://[도메인명];
# }
# }
이제 nginx를 재시작한다
sudo systemctl restart nginx
# ssl 인증 적용
ssl 관련 인증키는 /etc/nginx/https 라는 폴더내에 넣기로 했다.
우선 폴더를 생성한다.
cd /etc/nginx
sudo mkdir https
인증서 파일을 /etc/nginx/https 안에 넣는다.
그리고 site-enable 파일 내 ssl 관련 설정 주석을 푼다
server {
listen 443 ssl;
server_name [도메인명];
ssl_certificate /etc/nginx/https/[cert 파일명];
ssl_certificate_key /etc/nginx/https/[key 파일명];
location / {
proxy_pass http://[도메인명];
}
}
참고로 cert 파일은 파일내 다음 문구가 포함되어 있다.
-----BEGIN CERTIFICATE-----
...
-----END CERTIFICATE-----
그리고 key 파일은 다음 문구가 포함되어 있다.
-----BEGIN RSA PRIVATE KEY-----
...
-----END RSA PRIVATE KEY-----
서버를 다시 재시작 한다
sudo systemctl restart nginx
이제 도메인 관리 사이트에 들어가서 도메인을 연결해본다.
https 로 접속되면 성공.
끝.
반응형
'공부 > 프로그래밍' 카테고리의 다른 글
[springboot] 자주쓰는 정보 파라미터에 설정해 자동 주입하여 받기(resolver 사용) (0) | 2021.01.11 |
---|---|
[aws] aws cli로 s3 파일 삭제(console에서 파일삭제 실패 시-파일명 한글일 경우 실패함) (1) | 2021.01.08 |
[airflow] BigQueryOperator 사용할때 location 에러 (0) | 2021.01.04 |
[aws ec2] jenkins에 root 권한 주기 (0) | 2021.01.02 |
[react] react + nextjs + redux + typescript 설정하기(redux toolkit 사용) (1) | 2020.12.25 |
댓글