개발 당시에는 localhost:3000 의 주소를 이용해서 nodejs socketio 서버랑 통신했었다.

이후 서버에 올리고 포트번호가 아닌 cname 을 통해서 통신하기 위해서 nginx 세팅을 했다.

 

server {
        listen 443 ssl;

        ssl_certificate /etc/letsencrypt/live/my.co.kr/fullchain.pem;
        ssl_certificate_key /etc/letsencrypt/live/my.co.kr/privkey.pem;

        server_name api.my.co.kr;
        access_log /var/log/nginx/my-access.log;
        error_log /var/log/nginx/my-access.log;

        location / {
                proxy_pass https://my.co.kr:3000;
        }
 }

이렇게 api.my.co.kr 을 3000번 포트로 연결해놨다.

그런데 아무리 해도 안되길래 

뭐지? ssl 세팅을 잘못했나? 하면서 삽질을 엄청했다.

그러다 그냥 클라이언트에서 3000번 포트 (https://my.co.kr:3000) 로 연결하니 바로 되길래 nginx 쪽이 문제구나 싶었다.

 

https://socket.io/docs/v3/reverse-proxy/ 

 

검색하니 바로 나오더라

해결방법은

 

server {
        listen 443 ssl;

        ssl_certificate /etc/letsencrypt/live/my.co.kr/fullchain.pem;
        ssl_certificate_key /etc/letsencrypt/live/my.co.kr/privkey.pem;

        server_name api.my.co.kr;
        access_log /var/log/nginx/my-access.log;
        error_log /var/log/nginx/my-access.log;

        location / {
                proxy_pass https://my.co.kr:3000;
        }

		# 아래 부분
        location /socket.io/ {
              proxy_pass https://my.co.kr:3000/socket.io/;
              proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
              proxy_set_header Host $host;
              proxy_http_version 1.1;
              proxy_set_header Upgrade $http_upgrade;
              proxy_set_header Connection "upgrade";
    }
 }

 

코드 블럭의 아래 location /socket.io 부분을 추가해주면 된다.

 

nginx 로그를 봤을 때 socketio 를 통신하면서 해당 주소의 /socket.io 와 통신해야하는데 이 부분이 문제가 생겨서 그런 듯 하다.

'Dev' 카테고리의 다른 글

[Nginx] 403 forbidden ( 13 : permission denied )  (48) 2021.11.23
[Nginx] 에러 로그 실시간 확인 하기  (51) 2021.11.23
Fail2ban 설치  (47) 2021.06.07
[Raspbian] 라즈베리 파이 VNC 접속하기  (14) 2021.03.17
[Linux] ssh server 자동 실행  (19) 2021.02.16

nodejs express 서버를 로컬에선 오차없이 실행되다가 서버에만 올리면 이상해지길래 timezone 문제라고 생각이 들었다.

 

sudo rm /etc/localtime
sudo ln -s /usr/share/zoneinfo/Asia/Seoul /etc/localtime

이후 nodejs 재실행하니 제대로 동작했다.

nginx로 웹서버를 하나 열었더니 권한 에러가 뜬다

 

"/root/master/index.html" is forbidden (13: Permission denied),

 

해당 index.html 의 권한을 먼저 보고 

 

ls -l

 

root 사용자로 돼있다.

 

이후 nginx 설정 파일을 수정하자

 

nano /etc/nginx/nginx.conf

 

첫줄의 user 를 root 로 바꿔주니 해결됐다.

 

이것저것 찾아보니 방법이 많던데

나는 이걸로 해결돼서 일단 올려놓음

'Dev' 카테고리의 다른 글

Nginx 에서 Socket.io 세팅하기  (20) 2023.02.11
[Nginx] 에러 로그 실시간 확인 하기  (51) 2021.11.23
Fail2ban 설치  (47) 2021.06.07
[Raspbian] 라즈베리 파이 VNC 접속하기  (14) 2021.03.17
[Linux] ssh server 자동 실행  (19) 2021.02.16
tail -f /var/log/nginx/error.log

tail 명령어에 -f 옵션을 줘서 실시간으로 변경되는걸 확인 할 수 있다

'Dev' 카테고리의 다른 글

Nginx 에서 Socket.io 세팅하기  (20) 2023.02.11
[Nginx] 403 forbidden ( 13 : permission denied )  (48) 2021.11.23
Fail2ban 설치  (47) 2021.06.07
[Raspbian] 라즈베리 파이 VNC 접속하기  (14) 2021.03.17
[Linux] ssh server 자동 실행  (19) 2021.02.16

0.

 

집에 라즈베리파이를 설치, 서버를 열어놨다.

근데 어느순간부터 ssh가 렉이 엄청 먹길래

무슨일인가 싶어서 보니 cpu 사용량이 100%를 찍고있었다. 아무것도 안했는데

 

그래서 해킹인가 싶어서 ssh 접속 기록을 찾아봤다

 

sudo nano /var/log/auth.log

 

난리가 났다. 모르는 아이피에서 엄청나게 짧은 간격으로 계속 접속을 시도하고 있었다.

fail2ban 을 설치해서 한번 무차별 접속을 막아보자

 

1. 설치

 

sudo apt install fail2ban

 

2. 세팅

 

세팅 파일을 작성하자

sudo nano /etc/fail2ban/jail.local
# jail.local

[DEFAULT]
# 최대 입력 허용 횟수
maxretry = 5

# 밴 시간 (초), -1 : 영구
bantime  = -1

[sshd]
enabled = true

# 22번 포트가 아닌 다른 포트를 사용 중 이라면 변경
port = ssh
filter = sshd
logpath = /var/log/auth.log

 

간단하게 이정도만 작성했다. 필요한 기능이 있으면 공식 홈페이지에서 찾아보는걸로.

제일 하단에 공홈 링크 첨부

 

sudo service fail2ban restart

 

서비스를 재시작해서 작성한 세팅 파일로 시작되도록

 

3. 확인

 

밴이 잘 되고 있는지 확인해보자

sudo fail2ban-client status sshd
Status for the jail: sshd
|- Filter
|  |- Currently failed: 3
|  |- Total failed:     11
|  `- File list:        /var/log/auth.log
`- Actions
   |- Currently banned: 5
   |- Total banned:     5
   `- Banned IP list:   116.252.80.181 123.207.198.153 139.155.55.250 218.92.0.208 223.39.219.159

 

5개의 ip가 밴된걸 확인 할 수 있다.

 

나도 실수로 밴 될수도 있으니 밴 해제 명령어도 있다

sudo fail2ban-client set sshd unbanip [ip]

 

https://www.fail2ban.org/

 

Fail2ban

Since spammers were way too much active on this wiki, user account creation has been disabled. Please, ask on the mailing-lists if you require a new user account. Thank you for your understanding and sorry about that. To experiment with this wiki try Sandb

www.fail2ban.org

 

+ Recent posts