먼저 Nginx의 폴더 구조에 대해서 설명하겠다.
/etc/nginx : 여기는 설정파일들이있음.
/etc/nginx/conf.d : 기본설정 파일이 들어있음.
/usr/share/nginx/html : 기본 띄우는 html파일폴더
/var/log/nginx : 로그파일들이다.
/etc/nginx/nginx.conf 가 기본 설정 파일임.
여기 안에 보면,
> vi nginx.conf
include 가 있다.
# For more information on configuration, see:
# * Official English Documentation: http://nginx.org/en/docs/
# * Official Russian Documentation: http://nginx.org/ru/docs/
user nginx;
#user root;
worker_processes auto;
error_log /var/log/nginx/error.log;
pid /var/run/nginx.pid;
# Load dynamic modules. See /usr/share/nginx/README.dynamic.
include /usr/share/nginx/modules/*.conf;
events {
worker_connections 1024;
}
http {
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
access_log /var/log/nginx/access.log main;
sendfile on;
tcp_nopush on;
tcp_nodelay on;
keepalive_timeout 65;
types_hash_max_size 2048;
include /etc/nginx/mime.types;
default_type application/octet-stream;
# Load modular configuration files from the /etc/nginx/conf.d directory.
# See http://nginx.org/en/docs/ngx_core_module.html#include
# for more information.
include /etc/nginx/conf.d/*.conf;
include /etc/nginx/site-available/*.conf;
}
include /etc/nginx/conf.d/*.conf
는 conf.d폴더의 .conf로 끝나는 파일은 다 저 자리에 넣는거다.
그래서, 관리하는 사이트 만 밑에처럼 작성해서 test.conf 이런식으로 넣어 놓으면 각 서버 정보가 추가되는거다.
server {
listen 80;
server_name test.com;
root /usr/share/nginx/html;
location / {
include /etc/nginx/uwsgi_params;
proxy_pass http://127.0.0.1:3000;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;
}
}
자, 위에꺼는 80 포트, test.com으로 들어오면,
로컬호스트 3000포트로 보내라는 건데,
여기서 계속 에러가 뜨는거다..
2018/02/22 09:40:25 [crit] 25667#0: *6 connect() to 127.0.0.1:3000 failed (13: Permission denied) while connecting to upstream, client: 112.111.11.11, server: test.com, request: "GET / HTTP/1.1", upstream: "http://127.0.0.1:3000/", host: "test.com"
이런식의 로그가 게속 뜨는거다.
여기서 미치는거다. 권한 문제인가 해서...폴더들 권한 등등 다 넣었는데, 안되는거다.....
아무리 찾아도 없고........
그러다가 방화벽쪽 문제인거 같더라.
SELinux에서 포트포워딩을 막는거 같아서,
$setsebool httpd_can_network_connect on
위에처럼 해주니까, 바로 프록시포트가 먹힌다.
진짜 이거 찾는데, 엄청 오래 걸렸다!!
<https://stackoverflow.com/questions/23948527/13-permission-denied-while-connecting-to-upstreamnginx 여기 참조> I’ve run into this problem too. Another solution is to toggle the SELinux boolean value for httpd network connect to
To make the change persist use the -P flag.
You can see a list of all available SELinux booleans for httpd using
|
'컴퓨터 > 리눅스 클라우드(AWS, GCP)' 카테고리의 다른 글
Nodejs 업그레이드 (0) | 2018.02.23 |
---|---|
Nodejs 설치 (libv8.so.3 에러) (0) | 2018.02.22 |
Nginx, php 설치 및 연동 (0) | 2018.02.22 |
Google Cloud Platform (GCP) 터미널접속(root접속) (0) | 2018.02.20 |
리눅스 백그라운드 작업(SSH 끊겨도 유지) (0) | 2018.02.01 |