설치
Nginx
다운받기 원하는 경로에 들어간후,
curl https://nginx.org/download/nginx-1.24.0.tar.gz --output nginx.tar.gz
tar -zxvf nginx.tar.gz
버전은 nginx.org 들어가서 확인해야 합니다
Dependencies
위 사이트 가서 dependency 확인합니다
cd nginx-1.24.0
mkdir dependencies
cd dependencies
1. zlib
다음 버전 넘어가면 이전 버전 경로가 없어지니 zlib.net 들어가서 버전 확인해줍니다
wget http://zlib.net/zlib-1.3.tar.gz
tar -zxf zlib-1.3.tar.gz
cd zlib-1.3
./configure
make
sudo make install
2. openssl
wget http://www.openssl.org/source/openssl-1.1.1v.tar.gz
tar -zxf openssl-1.1.1v.tar.gz
cd openssl-1.1.1v
./Configure linux-x86_64 --prefix=/usr
make
sudo make install
make에서 컴파일 안되면 아래 명령어 치고 ./Configure [linux-x86_64] 부분을 적절하게 바꿔줍니다.
./Configure LIST | grep -i linux
다 설치되고 나서 명령어로 openssl 쳤을 때
libssl.so.1.0.0: cannot open shared object file: No such file or directory 에러나면
vi ~./bashrc
[맨아래줄]
export LD_LIBRARY_PATH=/usr/lib64:$LD_LIBRARY_PATH
또는,
/usr/lib64에 libssl.so.1.0.0 파일 자체가 없다면 openssl 압축 연 경로에 있으니 복사해서 넣으면 됩니다
3. PCRE
wget github.com/PCRE2Project/pcre2/releases/download/pcre2-10.42/pcre2-10.42.tar.gz
tar -zxf pcre2-10.42.tar.gz
cd pcre2-10.42
./configure
make
sudo make install
nginx 설치
nginx-1.24.0 설치한 경로 들어가서
nginx-1.24.0/
|-- depencendies/
| |--openssl-1.1.1v/
| |--pcre2-10.42/
| |--zlib-1.3/
이 상태가 되어야함
cd /nginx-1.24.0경로/nginx-1.24.0
./configure \
--prefix=설치하고싶은경로/nginx \
--sbin-path=설치하고싶은경로/nginx \
--conf-path=설치하고싶은경로/nginx.conf \
--pid-path=설치하고싶은경로/nginx/nginx.pid \
--error-log-path=설치하고싶은경로/nginx/log/error.log \
--http-log-path=설치하고싶은경로/nginx/log/error.log \
--with-pcre=/nginx-1.24.0경로/nginx-1.24.0/dependencies/pcre2-10.42 \
--with-zlib=/nginx-1.24.0경로/nginx-1.24.0/dependencies/zlib-1.3 \
--with-http_ssl_module \
--with-openssl=/nginx-1.24.0경로/nginx-1.24.0/dependencies/openssl-1.1.1v \
--with-stream
make
sudo make install
저는 [설치하고싶은경로/nginx]라는 경로에서 모든 파일을 관리하고 싶어서 이런식으로 구성했습니다
[설치하고싶은경로/nginx]에 nginx가 설치됩니다
prefix로 지정한 경로에서 정적파일 서빙하니 참고해주세요
구성
정적파일은 nginx가 서빙하고 was는 reverse proxy를 통해 서빙하게 합니다.
다른 예제에서는 정적파일도 reverse proxy를 통해 별도의 web서버에서 서빙하는데 굳이 그럴 필요는 없을 것 같습니다.
/conf/nginx.conf를 열어 몇 줄 추가합니다
user root; # 첫줄에 추가 (Nginx worker processes가 실행될 user group 지정인데 root 대신 다른 group으로 하는게 좋긴 하다)
...
http{
...
include conf.d/*.conf; # 프록시 구성을 conf.d라는 별도 폴더에서 설정하겠습니다
charset utf-8; # 이게 없으면 한글 깨짐
...
}
/conf/conf.d/was.conf 경로 및 파일 생성 후
프록시를 설정할 파일을 작성합니다
upstream sentiment_was {
server my.test.com:7080;
keepalive 100;
}
server {
listen 80;
server_name my.test.com;
access_log /home/jun/server/nginx/log/was/access.log;
error_log /home/jun/server/nginx/log/was/access.log;
location /search {
proxy_set_header Host $host;
proxy_pass http://sentiment_was;
}
}
nginx가 80번 포트에서 /search라는 경로로 요청받으면 upstream서버로 요청을 전달합니다
proxy_set_header 없으면 bad request 뜹니다
저는 별도 서버 구성은 하지 않고 /etc/hosts 파일 열어서 my.test.com에 private IP로 설정했습니다
같은서버 7080 포트에서 was 서버 돌려줍니다
upstream에 서버 여러개 등록하면 LB로 구성가능합니다
마지막으로 정적파일을 nginx/html 경로에 하나 생성합니다
vi static_file.html
<!DOCTYPE html>
<html>
<body>
<h1>My First Heading</h1>
<p>My first paragraph.</p>
<a href="https://jjjjqqq.tistory.com">블로그 보기!</a>
<a href="http://my.test.com/search/history/detail/12">was호출하기!</a>
</body>
</html>
실행
예제에서는 service 등록해서 실행하지만
저는 nginx경로에서만 관리되기 원하기 때문에 nginx 폴더 들어가서 실행합니다
sudo ./nginx : 실행
sudo ./nginx -t : conf 문법확인
sudo ./nginx -s stop : 중지
sudo ./nginx -s restart : 재실행
sudo ./nginx -s reload : 중지 없이 재실행
ps -ef | grep nginx : nginx 프로세스 확인
실행성공하고 외부에서 접속이 안되면 방화벽 뚫어줍니다
저는 우분투 서버로 구성되어있습니다
sudo ufw allow 80/tcp
테스트
윈도우에서도 my.test.com로 리눅스 서버 ip hosts파일 등록 후 접속
'개발업무 > 개발' 카테고리의 다른 글
Java 대용량 엑셀 다운로드 (SXSSF) (0) | 2024.04.10 |
---|---|
Spring 실행 윈도우 스크립트 (1) | 2024.01.11 |
[Git] pull request view - diff (0) | 2023.11.15 |
[MySQL] Three-valued logic: exists / not exists / in / not in (0) | 2023.08.16 |
Express.js timeout 체크리스트 (0) | 2023.05.29 |