Spring 프로젝트에서 /build에서 ./gradlew clean build 하면 /build/libs에 jar 파일 생성
jar 파일은 .gitignore에 지정되어있기 때문에 올라가지 않음 그래서 git add -f crud-0.0.1-SNAPSHOT.jar 해서 git에 build 된 jar 파일 올리기
서버의 /var/www에서 git clone
/var/www/makeserver/crud/build/libs에서 jar 파일 실행
java -jar crud-0.0.1-SNAPSHOT.jar 하면 실행됨
그 전에 nginx 설정 등 할게 많음
내 생각에는 nginx 와 apache2 동시에 올려놓을 수 없음
이걸로 엄청 애먹었다. nginx 끄고 apache2 켜고 다시 nginx start 할라니까 안되고 근데 알고봤더니 원래 안되는것 이었다.
ssh | tcp | 22 | @@@@@@@ |
---|---|---|---|
http | tcp | 80 | 0.0.0.0/0 |
http | tcp | 80 | ::/0 |
사용자 지정 tcp | tcp | 8080 | ::/0 |
사용자 지정 tcp | tcp | 8080 | 0.0.0.0/0 |
Client
- Forward Proxy
- Internet
- Server
접속 제한 회피
특정 콘텐츠 제한
캐싱 기능
IP 우회 및 보안
- 클라이언트-프록시-서버. 서버측은 클라이언트의 정보가 아닌 포워드 프록시의 정보를 받게된다. 서버측에 클라이언트의 정보를 숨길 수 있다.
Client
- Internet
- Reverse Proxy
- Server
리버스 프록시는 웹서버 앞에 위치한다. 포워드 프록시와 마찬가지로 클라이언트의 요청을 전달받아 서버에 전달하고 서버의 응답을 클라이언트에 전달한다. 로컬 밖으로 나감
그렇다면 리버스와 포워드의 차이는 뭘까 ?
리버스 프록시는 서버 앞에 위치한다. 포워드 프록시가 클라이언트들을 위한 중간 매개체인 반면, 리버스 프록시는 서버들을 위해 클라이언트가 해당 서버에 접속하는 중간 매개체 이다.
쉽게 말해 포워드는 주로 클라이언트를 위해, 리버스는 서버를 위해 일한다.
보안에 강함
로드밸런싱
캐싱
sudo nginx -t // nginx 설정 파일 문법 올바른지 확인
sudo service nginx status
sudo systemctl nginx restart
sudo systemctl nginx stop
sudo mkdir /var/log/nginx/proxy
sudo vi /etc/nginx/proxy_params
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-NginX-Proxy true;
client_max_body_size 256M;
client_body_buffer_size 1m;
proxy_buffering on;
proxy_buffers 256 16k;
proxy_buffer_size 128k;
proxy_busy_buffers_size 256k;
proxy_temp_file_write_size 256k;
proxy_max_temp_file_size 1024m;
proxy_connect_timeout 300;
proxy_send_timeout 300;
proxy_read_timeout 300;
proxy_intercept_errors on;
sudo vi /etc/nginx/sites-available/{donain}
server { # server 블록
listen 80;
server_name {domain} www.{domain};
access_log /var/log/nginx/proxy/access.log;
error_log /var/log/nginx/proxy/error.log;
location / { # location 블록
include /etc/nginx/proxy_params;
proxy_pass http://{퍼블릭IP주소}:8088; # reverse proxy의 기능
}
}
이 코드로 location 블록의 proxy_pass로 8088번 포트로 접속해야 볼 수 있는 화면(Spring 프로젝트 화면)을 80번 포트에 접속했을 때 확인할 수 있도록 설정. Reverse proxy 기능 설정
nginx는 이제 listen 지시문에 의해 포트 80으로 들어오는 요청들에 대해 servername과 정확하게 일치하는 서버 블록을 찾으러고 시도한다. server_name 추가할 때 버킷 메모리 문제가 발 생할 수 있기에 아래와 같이 주석처리를 제거합니다.
/etc/nginx/nginx/nginx.conf
http { ...
server_names hash_bucke_size 64; # 주석 처리를 제거
...
}
sudo ln -s /etc/nginx/sites-available/{domain} /etc/nginx/sites-enabled/
sudo rm /etc/nginx/sites-available/default
sudo rm /etc/nginx/sites-enabled/default