Search
Duplicate
📍

Nginx 삽질

생성일
2022/05/15 23:18
태그
개발

개요

nginx 란?
간단한 웹 서버
프록시 서버

설치

apt install nginx # 설치 service nginx start # 실행 service nginx status # 실행 확인하기
Python
복사
/etc/nginx 폴더가 생긴다.

기본 설정

설정 파일

nginx.conf
기본적으로 Nginx 에 관련된 설정 파일
여기서 sites-enabled 폴더에있는 설정들도 가져온다.
sites-available
가상 서버 환경들에 대한 설정 파일이 위치하는곳
sites-enabled
sites-available 에 있는 설정 파일중 실제로 적용하고 싶은 파일을 symlink 로 연결한 폴더

http 블록

하위로 server 블록과 location 블록을 가지는 루트블록이다.
웹 트래픽을 처리하는 부분을 담고있다.

server 블록

하나의 웹사이트를 선언하는데 사용된다.
server 블록이 여러개면, 한개의 호스트로 여러 웹사이트를 서빙할 수 있다. (가상호스트)
디렉티브
listen : 웹 사이트가 바라보는 포트
server_name
서버 도메인
여러개가 올 수 있다. (example.com, www.example.com)
와일드 카드(*)를 사용할 수 있다. (*.example.com, example.*)
root : 웹 사이트의 root 폴더 경로

location 블록

url을 처리하는데 사용된다.
두번째 인자로 url 을 받는다.
/ : 가장 구체적인 매치가 요청을 처리한다.
~ : 정규표현식으로 매치를 수행한다.
~* : 정규표현식에서 대소문자 구분없이 매치를 수행한다.
^~ : 매치가 된다면, 다른 매치를 검색하지 않고 수행한다.
= : 정확하게 일치하는 매치를 수행한다.
디렉티브
root : 해당 location 의 문서의 root 경로
index : 파일명이 명시되어 있지 않을때, 어떤파일로 연결해야할지 알려준다. (파일이 여러개 올 수 있음)

오토인덱스 설정

기본적으로 폴더에 접근하면 index 에 적어둔 파일들을 순차적으로 접근해본다.
오토 인덱스가 켜져있으면, 그래도 없으면 파일을 리스트를 보여준다.
만약에 존재하지 않는 폴더에 접근하면 404 를 return 해준다. (원래 있던것)
location / { autoindex on; try_files $uri $uri/ =404; }
Bash
복사

리다이렉션 설정

server { listen 80 default_server; listen [::]:80 default_server; return 301 https://$host$request_uri; }
Bash
복사
참고

SSL (https) 설정

server { listen 443; ssl on; ssl_certificate /etc/ssl/certs/localhost.dev.crt; ssl_certificate_key /etc/ssl/private/localhost.dev.key; }
Bash
복사

PHP 설정

주석 되어있는걸 풀면된다.
php 모듈과 nginx 를 연결하는 규약을 정의한것이 cgi 이다.
php-fpm (PHP FastCGI Process Manager) 를 통해서 php 를 연동시킨다.
location ~ \.php$ { include snippets/fastcgi-php.conf; fastcgi_pass unix:/var/run/php/php7.3-fpm.sock; }
Bash
복사