Reverse Proxy 와 Load Balencer 란 무엇입니까?

리버스 프록시 서버 및로드 밸런서는 클라이언트 서버 컴퓨팅 아키텍처의 구성 요소입니다. 둘 다 클라이언트와 서버 간의 통신에서 중개자 역할을하여 효율성을 향상시키는 기능을 수행합니다. 전용 전용 장치로 구현할 수 있지만, 현대 웹 아키텍처에서 점점 더 상용 하드웨어에서 실행되는 소프트웨어 응용 프로그램입니다.

기본 정의는 간단합니다.

  • 리버스 프록시는 클라이언트의 요청을 받아 이를 수행 할 수있는 서버로 전달한 다음, 서버의 응답을 클라이언트에 반환합니다.
  • 로드 밸런서는 들어오는 클라이언트 요청을 서버 그룹간에 분배하며, 각 경우 선택한 서버에서 적절한 클라이언트로 응답을 반환합니다.

그러나 그들은 꽤 비슷하게 들립니다. 두 유형의 응용 프로그램은 클라이언트와 서버 사이에 있으며 전자의 요청을 수락하고 후자의 응답을 제공합니다. 리버스 프록시와로드 밸런서가 무엇인지 혼동하는 것은 놀라운 일이 아닙니다. 그들을 괴롭히는 데 도움이되도록 일반적으로 웹 사이트에 배포되는시기와 이유를 살펴 보겠습니다.

로드 밸런싱(Load Balancing)

로드 밸런서는 단일 서버가 효율적으로 처리하기에 요청량이 너무 많기 때문에 사이트에 여러 서버가 필요한 경우 가장 일반적으로 배포됩니다. 여러 서버를 배포하면 단일 장애 지점이 없어 웹 사이트의 안정성이 향상됩니다. 가장 일반적으로 서버는 모두 동일한 콘텐츠를 호스팅하며, 로드 밸런서의 작업은 각 서버의 용량을 최대한 활용하고 모든 서버의 과부하를 방지하며 클라이언트에 가장 빠른 응답을 제공하는 방식으로 작업 부하를 분산시키는 것입니다.

로드 밸런서는 클라이언트가 보는 오류 응답 수를 줄여 사용자 경험을 향상시킬 수도 있습니다. 서버가 중단되는 시기를 감지하고 그룹에서 다른 서버로 요청을 전환하여이를 수행합니다. 가장 간단한 구현에서로드 밸런서는 일반 요청에 대한 오류 응답을 가로 채서 서버 상태를 감지합니다. 응용 프로그램 상태 확인은 로드 밸런서가 별도의 상태 확인 요청을 전송하고 서버 상태를 고려하기 위해 지정된 유형의 응답이 필요한 보다 유연하고 정교한 방법입니다.

일부로드 밸런서에서 제공하는 또 다른 유용한 기능은 세션 지속성 입니다. 즉, 특정 클라이언트의 모든 요청을 동일한 서버로 보냅니다. 이론적으로 HTTP 는 상태 비저장 (stateless)이지만 많은 응용 프로그램은 전자 상거래 사이트의 쇼핑 바구니와 같은 핵심 기능을 제공하기 위해 상태 정보를 저장해야합니다. 로드 밸런서가 사용자 세션의 요청을 모든 요청을 초기 요청에 응답 한 서버로 보내지 않고 다른 서버로 분배하는 경우 이러한 애플리케이션은로드 밸런싱 된 환경에서 성능이 저하되거나 심지어 실패 할 수도 있습니다.

리버스 프록시(Reverse Proxy)

로드 밸런서 배포는 여러 서버가있는 경우에만 의미가 있지만 웹 서버나 응용 프로그램 서버가 하나만 있어도 리버스 프록시를 배포하는 것이 좋습니다. 리버스 프록시를 웹 사이트의 "공개 얼굴"로 생각할 수 있습니다. 이 주소는 웹 사이트에 광고 된 주소이며, 웹 사이트에서 호스팅되는 콘텐츠에 대한 웹 브라우저 및 모바일 앱의 요청을 수락하기 위해 사이트 네트워크의 가장자리에 있습니다. 이점은 두 가지입니다.

  • 보안 강화 : 백엔드 서버에 대한 정보가 내부 네트워크 외부에 표시되지 않으므로 악의적인 클라이언트가 직접 액세스하여 취약점을 악용 할 수 없습니다. 많은 리버스 프록시 서버에는 특정 클라이언트 IP 주소의 트래픽을 거부하거나 (블랙리스트) 각 클라이언트에서 허용되는 연결 수를 제한하여 분산 서비스 거부 (DDoS) 공격으로부터 백엔드 서버를 보호하는 기능이 포함되어 있습니다.
  • 확장 성 및 유연성 향상 : 클라이언트는 리버스 프록시의 IP 주소 만 볼 수 있으므로 백엔드 인프라의 구성을 자유롭게 변경할 수 있습니다. 이는 특히 트래픽 양의 변동에 맞게 서버 수를 늘리거나 줄일 수있는로드 균형 조정 환경에서 유용합니다.

리버스 프록시를 배포하는 또 다른 이유는 웹 가속을 위한 것입니다. 응답을 생성하고 클라이언트에 반환하는 데 걸리는 시간이 줄어 듭니다. 웹 가속 기술에는 다음이 포함됩니다.

  • 압축 : 서버 응답을 클라이언트로 반환하기 전에 압축하면 (예 : gzip ) 필요한 대역폭이 줄어들어 네트워크를 통한 전송 속도가 빨라집니다.
  • SSL 종료 : 클라이언트와 서버 간의 트래픽을 암호화하면 인터넷과 같은 공용 네트워크를 통과 할 때 이를 보호합니다. 그러나 해독 및 암호화는 계산 비용이 많이 들 수 있습니다. 수신 요청을 해독하고 서버 응답을 암호화함으로써 리버스 프록시는 백엔드 서버에서 리소스를 확보하여 콘텐츠를 제공하는 주된 목적에 전념 할 수 있습니다.
  • 캐싱 : 백엔드 서버의 응답을 클라이언트에 반환하기 전에 리버스 프록시는 해당 서버의 사본을 로컬에 저장합니다. 클라이언트 (또는 클라이언트)가 동일한 요청을하면 리버스 프록시는 요청을 백엔드 서버로 전달하는 대신 캐시에서 응답 자체를 제공 할 수 있습니다. 이렇게하면 클라이언트에 대한 응답 시간이 줄어들고 백엔드 서버의로드가 줄어 듭니다.

'리눅스' 카테고리의 다른 글

LINUX | manjaro 설치후 할일  (0) 2020.05.29
LINUX | swap 용량 늘리기  (0) 2020.04.29
Reverse Proxy 와 Load Balencer  (0) 2020.04.06
nginx | site-enabled, site-available.md  (0) 2020.02.11
freenas | ssh key 로그인  (0) 2020.01.06
ansible - 자동화의 시작  (0) 2019.09.11
블로그 이미지

부들잎

안녕하세요

댓글을 달아 주세요

nginx 에서 사용방법 중에 sites-availablesites-enabled로 가상 홈페이지를 관리하는 것이 있다.
일반적으로 ln -s심볼릭을 사용해서 설정을 공유한다. 그런데 이게 미묘한 차이로 날려먹는 경우가 있어서 다시 기억하고자 글을 남긴다.

폴더의 사용정의

sites-available/

설정을 저장하는 곳이다. 여기에 설정을 만든 것은 실제로 nginx에 반영되지는 않습니다. 반영하기 위해서는 sites-enabled에 설정파일을 복사 또는 심볼릭링크를 걸어줍니다.

sites-enabled/

sites-availiable에 작성한 설정을 적용하기 위한 폴더.

sudo ln -s /etc/nginx/sites-available/example.comc.conf /etc/nginx/sites-enabled/

ln -s 명령어에서 앞에 원본파일에 대한 폴더명을 전부 적어야 한다.

상대적인 주소로 인식하지 않기 때문에 반드시 폴더명을 다 적어 준다.

설정이 제대로 적용이 되었는지 테스트

$ sudo nginx -tnginx: the configuration file /etc/nginx/nginx.conf syntax is oknginx: configuration file /etc/nginx/nginx.conf test is successful

테스트 시 문제가 없다면 nginx 를 재시작해서 적용하자

$ sudo nginx -s reloador$ sudo systemctl restart nginx

sites-availablesites-enabled폴더가 없을 때

centos7의 기본 패키지로 설치를 했을 때 위와 같은 폴더가 생성이 안되어 있는 경우가 있다. 이 때는 직접 설정을 추가 해 주자.

# /etc/nginx/nginx.confhttp {    ....    include /etc/nginx/conf.d/*.conf;    include /etc/nginx/sites-enabled/*.conf; ## 저는 여기 추가 했어요.}

위와 같이 추가하고 nginx 재시작

nginx -s reload

'리눅스' 카테고리의 다른 글

LINUX | swap 용량 늘리기  (0) 2020.04.29
Reverse Proxy 와 Load Balencer  (0) 2020.04.06
nginx | site-enabled, site-available.md  (0) 2020.02.11
freenas | ssh key 로그인  (0) 2020.01.06
ansible - 자동화의 시작  (0) 2019.09.11
Fedora 30 | uim 입력기 변경  (0) 2019.08.20
블로그 이미지

부들잎

안녕하세요

댓글을 달아 주세요

가난한 세팅으로 SSL 적용하기

Imgur

집 인터넷은 이렇게 구성되어 있습니다
따로 도메인을 구매하지는 않은 상태이고 외부에서 내부로 접속하기 위해서 기본 DDNS로 설정해서 사용하고 있습니다.

ASUS 라우터에서는 DDN 서비스와 동시에 Let's Encrypt를 통해서 SSL/HTTPS 인증을 해 주는 기능을 가지고 있습니다. 이 인증파일을 가지고 Raspberry Pi에서 운영하고 있는 NGINX 서비스에서 적용할 수 있습니다

SSH를 통해 ASUS 공유기에 접속을 하고 인증파일을 찾습니다.

find / -iname *pem
admin@BLUE_CAVE:/tmp/home/root# find / -iname *pem
/jffs/.le/********.asuscomm.com/fullchain.pem
/jffs/.le/********.asuscomm.com/cert.pem
/jffs/.le/********.asuscomm.com/chain.pem
/rom/dh2048.pem

경로는 /jffs/.le/[DDNS명]으로 기본설정이 되는 것 같습니다.
해당 폴더로 들어가 보면 검색되는 파일명들과는 달리 4개의 파일이 있습니다.

cert.pem
chain.pem
domain.key
fullchain.pem

이 파일들을 nginx 설정엥 삽입 해야 합니다.

server {
    listen 443 ssl http2;
    listen [::]:443 ssl http2;
    server_name ********.asuscomm.com; 

    ssl_session_timeout 1d;
    ssl_session_cache shared:SSL:50m;
    ssl_session_tickets off;

    ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
    ssl_ciphers "EECDH+ECDSA+AESGCM EECDH+aRSA+AESGCM EECDH+ECDSA+SHA384 EECDH+ECDSA+SHA256 EECDH+aRSA+SHA384 EECDH+aRSA+SHA256 EECDH EDH+aRSA !RC4 !aNULL !eNULL !LOW !3DES !MD5 !EXP !PSK !SRP !DSS";
    ssl_prefer_server_ciphers on;

    ssl_certificate /etc/nginx/ssl/********.asuscomm.com/fullchain.pem;
    ssl_certificate_key /etc/nginx/ssl/********.asuscomm.com/domain.key;
    ssl_trusted_certificate /etc/nginx/ssl/********.asuscomm.com/chain.pem;

    location / {
        proxy_set_header Host $http_host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_pass http://127.0.0.1:3001;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
        proxy_next_upstream error timeout http_502 http_503 http_504;
    }
}

현재는 Proxy 형태로 서비스하고 있는 port를 연결하고 있습니다.

SSL/TLS 설정 파일을 세팅합니다.

블로그 이미지

부들잎

안녕하세요

댓글을 달아 주세요

synology | nginx + php70 + mariadb + wordpress

시놀로지를 처음 이용해 보았습니다.
워드프레스 홈페이지를 올리려고 했는데, 기본으로 제공되는 패키지를 통해서 설치를 진행 할 수 있습니다.

기본 패키지는 php 5.3 으로 설치 됨.

그래서, php70 으로 판올림하는 작업을 해서 설치하려고 합니다. php72로 설치하는 방법도 아래와 같은 방법으로 설치하면 될 것 같습니다. (추측’)

아래의 설치방법은 최대한 심플하고 간단하게 설치를 진행하려고 합니다.

준비

설치할 계정에 관리자 권한이 있어야 합니다.

SSH 접속환경

[제어판]에서 [고급모드]를 통해서 SSH 설정을 진행할 수 있습니다.
터미널 및 SNMP 메뉴를 클릭해서 SSH 서비스 활성을 통해 설정을 완료할 수 있습니다.

Imgur

Imgur

이제 아래 작업으로 진행해 주세요.

설치

대부분의 설치는 패키지 설치를 통해서 설치를 합니다. 아래와 같은 사항을 설치합니다.

  1. mariaDB 10
  2. php70
  3. php53 (phpMyAdmin 설치를 위한 필수)
  4. phpMyAdmin
  5. webstation
  6. 워드프레스 한글판 다운로드

mariaDB 10

설치할 때 root계정을 잘 메모 해 놓습니다. 나중에 phpMyAdmin에 접속 할 때 필요합니다.

php70

php70 기반으로 php70을 설치하기 위해서 필요합니다.

설치하고 난 뒤에 설정을 잡아야 사요할 수 있다.
아래 세팅 과정에서 다시 설명하겠습니다.

php53

시놀로지가 php53기반으로 돌아가는 패키지들이 있습니다.

phpMyAdmin

mariaDB 10을 웹을 통해서 접속하기 위해서 필요합니다.
외부에서 직접 서버로 접속하는 것은 보안에 위험이 있습니다. 또한, 접속하는 방법도 번거롭습니다.
반드시 설치를 진행하는 것이 좋습니다.

wordpress DB 및 계정 추가

wordpress 계정을 생성 해 준다

같은 네트워크단에서 설치를 진행할 경우 localhost권한만으로 가능하다.
But, 권한을 % 권한으로 전역 설정을 해 줘야 wordpress 설치가 외부에서 할 수 있다.

webstation

가상 호스팅기능을 사용하기 위해서 필요 합니다.
만약 여러개의 사이트를 운영하게 된다면 가상 호스팅을 통해서 진행하면 폴더관리 더 유연하게 할 수 있습니다.

설치가 되었다면 터미널상에서 web 폴더가 만들어 진 것을 확인할 수 있습니다.

기본 설치가 완료 되었다면 아래와 같은 화면을 패키지센터에서 확인 할 수 있습니다.

Imgur

워드프레스 설치

워드프레스 다운로드 페이지에서 한글판을 설치할 수 있습니다.
접속하면 볼 수 있는 다운로드 페이지에서 링크복사를 합니다.

링크 클릭을 눌러서 다운로드 받지 마세요.
터미널을 통해서 다운로드 하는게 편합니다.

SSH 접속

Imgur

입력하라는 암호는 사용자 암호를 입력하면 됩니다.

wordpress

webstation이 설치되어 있는 폴더에 가서 워드프레스 최신버전을 설치합니다.

다운로드 파일

# sudo wget https://ko.wordpress.org/wordpress-5.0.3-ko_KR.tar.gz

압축풀기

# sudo tar xvfz wordpress-5.0.3-ko_KR.tar.gz

/volume1/web/wordpress라는 폴더가 생성된 것을 확인할 수 있습니다.

참고 : sudo 항목을 입력하기 귀찮다면,
# sudo -i
명령어를 통해서 관리자로 로그인이 가능합니다.

설정

PHP 7.0 module 설정

module 사용설정을 해줘야 wordpress가 제대로 실행이 됩니다.

webstation에서 PHP 설정에서 PHP 7.0항목을 클릭합니다.

Imgur

Imgur

확장 모듈에 있는 모든 항목을 클릭 활성화 합니다.

가상호스팅 설정

패키지 webstation를 실행해서 가상호스트 설정을 시작한다.

  • 문서루트 : web/wordpress 워드프레스가 설치되어 있는 폴더
  • HTTP : Nginx
  • Default Profile ( PHP 7.0 )

Imgur

여기까지 설정이 되었으면 이제 설정했던 호스팅으로 브라우져 접속을 하면, 설치화면을 볼 수 있습니다.

추가설정

wordpress 권한설정

권한 설정을 해줘야 ftp에 대한 정보를 묻지않고 플러그인 설치를 진행할 수 있다

소유자 변경

# chown http:http -R /volume1/web/wordpress

시놀로지에서 기본으로 생성되어있는 http 사용자와 그룹이 있어서 일단 이렇게 설정
개인이 편하게 수정해서 사용할 수 있습니다.

파일 권한 수정

# cd /volume1/web/wordpress
# find ./ -type f -exec chmod 644 {} \;
# find ./ -type d -exec chmod 755 {} \;	

nginx 설정

nginx에서 설정하는 방법을 통해서 기본적인 설정을 진행했다.

nginx 가상호스팅 설정파일

가상호스팅 서비스에 관한 설정파일 위치

/etc/nginx/etc/app.d/server.webstation-vhost.conf

파일안을 들여다보면 각 가상호스팅 설정별로 최하단에 include 설정이 되어있는 폴더를 확인할 수 있다.

include /usr/local/etc/nginx/conf.d/279471f7-538e-4d3c-82e0-dbe9ef35393d/user.conf*;

진하게 표시되어있는 부분에 nginx 추가 설정파일을 작성하면 된다.

작성하는 이유 : 시놀로지가 재시작되면 server.webstation-vhost.conf 설정들이 재설정이 되기 때문에 상태 설정이 지워진다고 한다.

# WP Super Cache 설정 시작.
set $cache_uri $request_uri;

# POST 요청시 Super Cache 작동하지 않도록 설정
if ($request_method = POST) {
    set $cache_uri 'null cache';
}

# Get 요청시에 인수가 존재할 경우 Super Cache 작동하지 않도록 설정
if ($query_string != "") {
    set $cache_uri 'null cache';
}

# 다음의 주소로 시작할 경우 Super Cache 작동하지 않도록 설정
# wp-admin, xmlrpc 등을 포함함
if ($request_uri ~* "(/wp-admin/|/xmlrpc.php|/wp-(app|cron|login|register|mail).php|wp-.*.php|/feed/|index.php|wp-comments-popup.php|wp-links-opml.php|wp-locations.php|sitemap(_index)?.xml|[a-z0-9_-]+-sitemap([0-9]+)?.xml)") {
    set $cache_uri 'null cache';
}

# 로그인한 사용자나 최근에 댓글을 달았던 사람 상대로 Super Cache 작동하지 않도록 설정
if ($http_cookie ~* "comment_author|wordpress_[a-f0-9]+|wp-postpass|wordpress_logged_in") {
    set $cache_uri 'null cache';
}

# 1. Permalink가 작동하도록 설정한다.
# 2. 주소가 들어왔을 때 supercache가 가지고 있는 파일이 존재할 경우
#    PHP를 거치지 않고 바로 캐시를 전송시킨다.
location / {
    root   /volume1/web/wordpress;
    index  index.php index.html index.htm;
    try_files /wp-content/cache/supercache/$http_host/$cache_uri/index-https.html $uri $uri/ /index.php?$args;
}

설정파일을 추가한 뒤에 nginx 에서 설정을 적용한다

# nginx -s reload

워드프레스 설치

이제 서비스하는 주소로 접속하면 설치화면이 나올겁니다.
여기서 DB와 연결이 되지 않는다면, 설정을 아래와 같이 수정한 후 계속 합니다.

localhost:/run/mysqld/mysqld10.sock
블로그 이미지

부들잎

안녕하세요

댓글을 달아 주세요

version 정보

  • nginx : 1.14.0
  • php : 7.1.18

yum install nginx 를 통해서 설치하였으며,

# yum install nginx

[root@centos html]# nginx -v
nginx version: nginx/1.14.0

php71 은 remi repo를 추가해서 아래와 같이 설치했다.

# yum --enablerep=remi-php71 install php-fpm php-common

[root@centos html]# php -v
PHP 7.1.18 (cli) (built: May 24 2018 07:59:58) ( NTS )
Copyright © 1997-2018 The PHP Group
Zend Engine v3.1.0, Copyright © 1998-2018 Zend Technologies

설정파일

/etc/php-fpm.d/www.conf 파일

########### file /etc/php-fpm.d/www.conf
user = nginx
group = nginx
;listen은 nginx 설정과 맞춰줘야 한다.
;listen = 127.0.0.1:9000
listen = /var/run/php-fpm/php-fpm.sock;
listen.owner = nginx
listen.group = nginx

/etc/nginx/conf.d/default.conf 파일

########### file /etc/nginx/conf.d/default.conf

server {
    listen   80;
    server_name  your_server_ip;

    # note that these lines are originally from the "location /" block
    # root 설정이 없으면 404 에러가 날수 있다.
    root   /usr/share/nginx/html; 
    index index.php index.html index.htm;

    location / {
        try_files $uri $uri/ =404;
    }
    error_page 404 /404.html;
    error_page 500 502 503 504 /50x.html;
    location = /50x.html {
        root /usr/share/nginx/html;
    }

    location ~ \.php$ {
        try_files $uri =404;
        #fastcgi_pass 는 아래 두개 중 아무거나 사용해도 좋으나 php-fpm.d/www.conf 설정과 맞춰줘야 한다.
        #fastcgi_pass 127.0.0.1:9000;
        fastcgi_pass unix:/var/run/php-fpm/php-fpm.sock;
        fastcgi_index index.php;
        #/scripts 이름으로 인해서 오류가 생길 수 있다.
	    #fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include fastcgi_params;
    }
}

에러상황 #1

사이트에 접속은 되는데 404 error 또는 파일을 찾을 수 없는 상황

[error] 7469#7469: *1 FastCGI sent in stderr: "Primary script unknown" while reading response header from upstream, client: 192.168.0.114, server: localhost, request: "GET / HTTP/1.1", upstream: "fastcgi://unix:/var/run/php-fpm/php-fpm.sock:",

해결방법

/etc/nginx/conf.d/default.conf 설정파일에서 아래와 같이 root 폴더 설정을 한다.

server {
	root /usr/share/nginx/html;
	index
}

에러상황 #2

*1 connect() to unix:/var/run/php-fpm/php-fpm.sock failed (13: Permission denied) while connecting to upstream,

php-fpm.sock 의 그룹:사용자 권한 문제
아래와 같은 명령어로 해결할 수 있다.

# chown nginx:nginx /var/run/php-fpm/php-fpm.sock

다른 분들 고생 안했으면 좋겠다.

...

'리눅스' 카테고리의 다른 글

firstmall plus 설치하기  (0) 2018.07.27
Amazon Linux AMI에 mysql57 설치  (0) 2018.07.24
nginx + php71 + php-fpm 설치하기  (0) 2018.06.20
centos 7 yum 깨짐  (0) 2017.12.05
centos 7 커널 최신버전으로 설치하기  (0) 2017.09.18
리눅스 daemon 항목들 정리  (0) 2016.08.09
블로그 이미지

부들잎

안녕하세요

댓글을 달아 주세요

angular 5 빌드 후에 docker nginx 서버에 적용하기

angular 빌드하기

$ ng build

빌드후에 /dist/퐬더에 생성된 파일을 nginx 서버가 적용 된 곳에 파일을 복사합니다.

localhost/까지는 잘 접속이 되는 것을 확인할 수 있습니다. 그러나, angular 의 RoutingModule을 사용한 주소 뒤에 localhost/some/some2/ 와 같은 주소는 접속이 되지 않습니다.

이를 해결하기 위해서는 아래와 같이 nginx/conf.d/default.conf 파일을 수정해 주어야 합니다.

일단 저는 nginx/1.13.5버전을 사용하고 docker 를 통해서 실행해 놓은 상태입니다.

docker exec -it some-nginx /bin/bash

명령어를 통해서 docker 내부에 접속을 한후에 vim 으로 설정을 변경합니다.

: vim이 실행이 되지않을때에는 apt-get update를 진행후 apt-get install vim를 통해 설치를 하기 바랍니다.

/etc/nginx/conf.d/default.conf 파일을 수정 합니다.

server {
    listen       80;
    server_name  localhost;

    location / {
        root   /usr/share/nginx/html;
        index  index.html index.htm;
        try_files $uri$args $uri$args/ $uri $uri/ /index.html =404;
    }
...

이대로 접속이 되면 만세!

블로그 이미지

부들잎

안녕하세요

댓글을 달아 주세요

워드프레스 고유주소 사용했을 때 404에러가 나면

고유주소 설정

워드프레스 SEO 를 설치해 봤는데, 고유주소로 하면 좋다고 한다. 그래서 고유주소를 설정을 해 줬습니다.

Imgur

하지만, 이렇게 설정을 바로 바꾸고 나면, 블로그의 메인화면에는 문제가 없는데, 블로그의 글을 눌렀을 때, 페이지가 없다는 404에러가 납니다.

다른 블로그를 한번 찾아 보니까. Nginx에서는 아파치 처럼 htaccess나 mod_rewrite 활성화가 안된다고 합니다. 저는 이게 무슨 기능인지 잘 모르니까, 넘어 갔습니다.

nginx.conf

이 문제는 nginx 의 설정 파일 /etc/nginx/nginx.conf 의 location 부분을 수정하면 해결이 된다고 합니다.

nginx.conf 파일을 들어가면 아래와 같이 설정이 되어 있는 것을 확인 할 수 있습니다.

server{
    ...
    ...
    location / {
        try_files $uri $uri/ =404;
    }
}

location

이 설정을 자신의 홈페이지에 맞게 수정을 하면 됩니다.
예를 들어서 워드프레스가 다음과 같은 경로를 누르게 되면 접속이 된다고 한다면

http://forteleaf.blogger.com/

위와 같은 경로로 설정이 되어 있다면, 아래와 같이 수정을 하면 됩니다.

location / {
    try_files $uri $uri /index.php?args;
}

http://forteleaf/blogger.com/wordpress/

위와 같은 경로로 설정이 되어 있다면, 아래와 같이 수정을 하면 됩니다.

블로그 이미지

부들잎

안녕하세요

댓글을 달아 주세요