nginx 설치

yum 으로 nginx 설치

[root@localhost web]# yum install nginx

 

부팅 시 자동으로 시작하도록 설정 & 서비스 기동

[root@localhost web]# systemctl enable nginx
Created symlink from /etc/systemd/system/multi-user.target.wants/nginx.service to /usr/lib/systemd/system/nginx.service.
[root@localhost web]# systemctl restart nginx

 

방화벽 열기

[root@localhost nginx]# firewall-cmd --zone=public --add-port=80/tcp --permanent
success
[root@localhost nginx]# firewall-cmd --reload
success

 

기타 설정

나에게 필요했던 설정 포인트 : root 변경 / 포트 변경(7000) / charset 설정 / try_files 설정

[root@localhost nginx]# vi /etc/nginx/nginx.conf
    server {
        listen       7000 default_server;
        listen       [::]:7000 default_server;
        charset      utf-8;

        server_name  _;
        root         /opt/web/client;
        ...
        location / {
            root /opt/web/client;
            index index.html;
            try_files $uri /index.html;
        }
* try_files $uri /index.html;
요청한 주소의 uri를 무시하고 index.html 파일을 제공
ex) http://localhost/hello => uri : /hello, /opt/web/index.html,  
SPA(Single Page Application)의 경우 hello는 index.html을 기반으로 내부 모듈에 의해 결정됨
nginx의 경로에는 hello 없음
참고사이트) https://docs.nginx.com/nginx/admin-guide/web-server/serving-static-content/

selinux 설정

참고사이트) https://www.lesstif.com/pages/viewpage.action?pageId=48988516

https://www.lesstif.com/pages/viewpage.action?pageId=22053128

nginx 기동 시 아래와 같은 에러가 발생하는 경우 selinux 확인

Nov 05 16:34:24 localhost.localdomain nginx[35684]: nginx: [emerg] bind() to 0.0.0.0:7000 failed (13: Permission denied)

 

selinux 확인

[root@localhost nginx]# sestatus
SELinux status:                 enabled
SELinuxfs mount:                /sys/fs/selinux
SELinux root directory:         /etc/selinux
Loaded policy name:             targeted
Current mode:                   enforcing
Mode from config file:          enforcing
Policy MLS status:              enabled
Policy deny_unknown status:     allowed
Max kernel policy version:      31

=> 현재 enforcing모드로 사용 중임을 확인

 

semanage를 이용해서 설정하기 위해 policycoreutils-python 설치

[root@localhost nginx]# yum install policycoreutils-python
Failed to set locale, defaulting to C
Loaded plugins: fastestmirror
...
Complete!

 

오픈되어 있는 http port 확인

[root@localhost nginx]# semanage port -l | grep http_port_t
http_port_t                    tcp      80, 81, 443, 488, 8008, 8009, 8443, 9000
pegasus_http_port_t            tcp      5988

 

7000번 포트 추가

[root@localhost nginx]# semanage port -m -t http_port_t -p tcp 7000
* 아래와 같은 에러가 발생하는 경우 LANG을 C로 변경한 뒤에 추가
[root@localhost nginx]# semanage port -a -t http_port_t -p tcp 7000
Traceback (most recent call last):
  File "/usr/sbin/semanage", line 1074, in 
    do_parser()
  File "/usr/sbin/semanage", line 1061, in do_parser
sys.stderr.write(
"%s: %s\n" % (e.__class__.__name__, e.args[0]))
UnicodeEncodeError: 'ascii' codec can't encode characters in position 12-13: ordinal not in range(128)
[root@localhost nginx]# echo $LANG
ko_KR.UTF-8
[root@localhost nginx]# LANG=C
[root@localhost nginx]# semanage port -a -t http_port_t -p tcp 7000

해당포트가 다른 유형에 이미 추가되어 있어서 실패나는 경우 변경 옵션 사용 (-m)

[root@localhost nginx]# semanage port -a -t http_port_t -p tcp 7000
ValueError: Port tcp/7000 already defined
[root@localhost nginx]# semanage port -l | grep 7000
afs_fs_port_t udp 7000, 7005
gatekeeper_port_t tcp 1721, 7000

 

+ Recent posts