주:
- 이 사용지침서에서는 Oracle Cloud에 액세스해야 합니다. 무료 계정에 등록하려면 Oracle Cloud Infrastructure Free Tier 시작하기를 참조하십시오.
- Oracle Cloud Infrastructure 인증서, 테넌시 및 구획에 대한 예제 값을 사용합니다. 실습을 마칠 때는 이러한 값을 클라우드 환경과 관련된 값으로 대체하십시오.
Oracle Cloud Infrastructure를 사용하여 인터넷에서 액세스할 수 있는 웹 서버(IPv6)를 게시합니다.
소개
이 자습서에서는 OCI(Oracle Cloud Infrastructure) 내에서 웹 서버(OCI 인스턴스)를 생성하는 방법을 설명하고 인터넷에서 이 웹 서버에 액세스할 수 있도록 합니다. 이 웹 서버를 공용 IPv4 주소에서 액세스할 수 있게 만들 뿐만 아니라 FQDN(DNS 레코드)이 완전히 구성된 공용 IPv6 주소에서도 액세스할 수 있도록 만들 것입니다.
주: 이 자습서에서 사용한 도메인은 테스트 목적으로만 생성 및 구성되었습니다.
목표
-
IPv6를 통해 연결할 수 있는 OCI 인스턴스를 사용하여 웹 사이트를 생성합니다. 또한 웹 사이트를 최종적으로 사용할 수 있도록 다른 모든 필수 조건을 만들고 구성하는 방법에 대해서도 설명했습니다. 보너스로, 우리는 또한 NGINX 웹 서버가 어떻게 설치되고 PHP가 어떻게 통합되는지 설명했습니다. 마지막으로, 우리는 웹 서버에 대한 IPv4 또는 IPv6 연결을 확인하고 HTTP 또는 HTTPS로 연결하는 경우 사용할 수있는 사용자 정의 PHP 웹 사이트 또는 스크립트를 제공합니다.
- 작업 1: IPv6가 사용으로 설정된 새 VCN을 생성합니다.
- 작업 2: IPv6가 사용으로 설정된 새 서브넷을 생성합니다.
- 작업 3: IPv6가 사용으로 설정된 새 인스턴스를 생성합니다.
- 작업 4: 새 인터넷 게이트웨이를 생성하고 경로 지정을 구성합니다.
- 작업 5: 기본 보안 목록에서 HTTP 및 HTTPS를 엽니다.
- 작업 6: 이 인스턴스에 웹 서버를 설치합니다.
- 작업 7: DNS 레코드를 구성합니다.
- 작업 8 : NGINX 및 PHP로 사용자 정의 웹 사이트를 만듭니다.
- 작업 9: 인터넷에서 웹 서버를 테스트합니다.
작업 1: IPv6가 사용으로 설정된 새 VCN 생성
-
햄버거 메뉴를 열고 가상 클라우드 네트워킹을 누릅니다.
- 메뉴에서 가상 클라우드 네트워크를 선택해야 합니다.
- 작업할 구획을 선택합니다. 구획을 설정하지 않은 경우 루트 구획을 사용합니다.
- VCN 생성을 누릅니다.
-
가상 클라우드 네트워크 생성에 다음 정보를 입력합니다.
- VCN 이름을 입력하십시오.
- 구획이 아직 미리 채워지지 않은 경우 다시 선택합니다.
- 이 VCN 내에서 사용할 IPv4 CIDR을 선택합니다. 이 자습서에서는 IPv4 서브넷(일반적으로 /24)이 이 CIDR 시계에서 새겨지므로 /16 CIDR을 사용했습니다.
- 아래로.
- IPv6의 경우 Oracle 할당 접두어가 지정됩니다. Oracle 할당/56 접두어 지정을 선택합니다.
- VCN 생성을 누릅니다.
이제 IPv4 및 IPv6 서브넷을 분할하는 데 사용할 수 있는 새 IPv4 및 IPv6 네트워크 공간이 포함된 새 VCN이 생성되었습니다.
작업 2: IPv6가 사용으로 설정된 새 서브넷 생성
-
서브넷 생성을 누릅니다.
-
서브넷에 다음 정보를 입력합니다.
- 서브넷의 이름을 입력합니다.
- 이 서브넷이 미리 채워져 있지 않은 경우 해당 서브넷에 있어야 하는 구획을 선택하십시오.
- 서브넷 유형의 경우 지금 지역을 선택합니다.
- VCN에서 지정한 CIDR 블록에서 가져올 IPv4 서브넷을 입력합니다. 새 /24 CIDR 블록이 VCN에서 확인된 /16 내에 있는지 확인합니다.
- 아래로.
- IPv6의 경우 Oracle 할당 접두어가 지정됩니다. Oracle 할당/64 접두어 지정을 선택합니다.
- Oracle 할당 접두어를 완료하려면 새 10진수를 선택합니다.
- VCN의 기본 경로 테이블을 선택합니다.
- 인터넷에서 웹 서버에 액세스할 수 있도록 하려면 공용 IP 주소가 필요하므로 서브넷을 공용으로 설정합니다.
- 아래로.
- VCN에 대한 기본 DHCP를 선택합니다.
- VCN에 대한 기본 보안 목록을 선택합니다.
- 서브넷 생성을 누릅니다.
-
새로 생성된 서브넷의 상태는 프로비전 중입니다.
몇 분 후 새 서브넷의 상태가 사용 가능으로 설정됩니다.
이제 서브넷을 IPv4 및 IPv6 주소에 사용할 준비가 되었습니다.
작업 3: IPv6가 사용으로 설정된 새 인스턴스 생성
-
OCI 콘솔을 엽니다.
- 왼쪽 상단 모서리에 있는 햄버거 메뉴를 클릭합니다.
- 고정된 섹션에서 인스턴스를 누릅니다.
-
인스턴스 생성을 누릅니다.
-
컴퓨트 인스턴스 생성에서 다음 정보를 입력합니다.
- 인스턴스 이름을 입력하십시오.
- 인스턴스가 속해야 하는 구획을 선택합니다.
- 이 인스턴스를 배치할 가용성 도메인을 선택합니다. 이 자습서에서는 네덜란드 북서부 지역인 가용성 도메인이 하나만 있습니다.
- 아래로.
모든 항목을 기본값으로 유지하고 아래로 스크롤합니다.
- 기본 네트워크에서 기존 가상 클라우드 네트워크 선택을 선택합니다.
- 작업 1에서 생성된 VCN을 선택했습니다.
- 서브넷에 대해 기존 서브넷 선택을 선택합니다.
- 작업 2에서 생성된 서브넷을 선택합니다.
- 아래로.
- 전용 IPv4 주소: 자동으로 전용 IPv4 주소 지정을 선택합니다.
- IPv6 주소: 작업 2에서 서브넷을 만드는 동안 구성된 서브넷 접두어에서 IPv6 주소 지정을 선택합니다.
- IPv6 주소 지정: 접두어에서 자동으로 전용 IPv6 주소 지정을 선택합니다.
- 아래로.
- 이 Linux 인스턴스에 액세스하고 관리하려면 SSH 키로 작업해야 합니다. 이 자습서에서는 OCI가 새 SSH 키 쌍을 생성하도록 합니다.
- 로컬 컴퓨터에서 개인 및 공개 키를 다운로드하여 생성 후 이 Linux 인스턴스에 액세스하고 관리할 수 있도록 합니다.
-
인스턴스를 생성하려면 생성을 누르십시오.
- 생성 중 인스턴스의 상태는 PROVISIONING이 됩니다.
- 아직 사용 가능한 IP 주소 세부정보가 없습니다.
- 인스턴스가 완전히 생성되어 준비되면 상태가 RUNNING으로 설정됩니다.
- 이제 IP 주소 세부 정보를 사용할 수 있습니다.
다음 논리적 작업은 웹 서버 설치 및 구성을 시작할 수 있도록 SSH를 사용하여 인스턴스에 액세스하는 것입니다. 공용 IPv4 주소 및 전용 키를 사용하여 웹 서버에 접속하려고 시도할 때 작업 1에서 생성된 VCN에 인터넷 게이트웨이가 없으므로 접속할 수 없습니다. 이제 VCN에서 먼저 해당 인터넷 게이트웨이를 생성하고 경로 지정도 구성해야 합니다.
작업 4: 새 인터넷 게이트웨이 생성 및 경로 지정 구성
인터넷에서 새 인스턴스(웹 서버)에 대한 액세스를 사용으로 설정하려면 처음에 SSH를 사용하고 결국 HTTP로 전환하려면 인터넷 게이트웨이를 설정해야 합니다.
-
OCI 콘솔을 엽니다.
- Virtual Cloud Networks(가상 클라우드 네트워크)로 이동합니다.
- 작업 1에서 생성된 VCN을 선택합니다.
-
VCN 세부정보 페이지에서 인터넷 게이트웨이를 누릅니다.
-
인터넷 게이트웨이 생성을 누릅니다.
-
인터넷 게이트웨이 생성에 다음 정보를 입력합니다.
- 이름을 입력합니다.
- 구획을 선택합니다.
- 인터넷 게이트웨이 생성을 누릅니다.
-
경로 규칙을 추가합니다.
- 인터넷 게이트웨이는 사용 가능입니다.
- 경로 테이블을 누릅니다.
- 규칙 수에 기본 경로 테이블의
0
가 있습니다. - 기본 경로 테이블을 누릅니다.
- 프로토콜 버전: IPv4을 선택합니다.
- 대상 유형: 인터넷 게이트웨이를 선택합니다.
- 대상 CIDR 블록: 이 자습서에서는 모든 기본 IPv4 네트워크 트래픽이 인터넷 게이트웨이로 이동하도록 하려는 경우
0.0.0.0/0
를 선택합니다. - 이 작업에서 위에서 생성한 대상 인터넷 게이트웨이를 선택합니다.
- 경로 규칙 추가를 누릅니다.
- 새 IPv4 기본 경로 규칙이 생성되었습니다.
- IPv6 인터넷 트래픽을 라우팅하려면 새 IPv6 기본 인터넷 규칙도 만들어야 합니다. 경로 규칙 추가를 다시 누릅니다.
- 프로토콜 버전: IPv6을 선택합니다.
- 대상 유형: 인터넷 게이트웨이를 선택합니다.
- 대상 CIDR 블록: 이 자습서에서는 모든 기본 IPv6 네트워크 트래픽이 인터넷 게이트웨이로 이동하도록 하려는 경우
:/0
를 선택합니다. - 이 작업에서 위에서 생성한 대상 인터넷 게이트웨이를 선택합니다.
- 경로 규칙 추가를 누릅니다.
-
새 IPv6 기본 경로 규칙이 생성되었습니다.
- 전용 키를 사용하여 SSH를 통해 새로 생성된 인스턴스에 접속합니다.
- 연결이 성공적으로 설정된 후
ip a
명령을 실행하여 IP 주소를 확인합니다. - 전용 IPv4 주소는 인스턴스 세부정보에 대해 제공된 주소와 동일합니다.
- 또한 macOS CLI 터미널을 사용하여 연결을 테스트하고
ssh -i ssh-key-2024-02-05.key opc@xxx.xxx.xxx.48
명령을 실행합니다. - 연결이 성공적으로 설정된 후
ip a
명령을 실행하여 IP 주소를 확인합니다. - 전용 IPv4 주소는 OCI 콘솔의 인스턴스 세부정보에 대해 제공된 주소와 동일합니다.
인스턴스에 OCI 콘솔의 인스턴스 세부정보에 대해 제공된 IPv6 주소가 없습니다.
-
이 문제는 인스턴스를 재부팅하여 해결할 수 있습니다.
- 인스턴스로 이동합니다.
- Reboot를 누릅니다.
- 전용(private) 키를 사용하여 SSH를 통해 인스턴스에 다시 연결합니다.
- 연결이 성공적으로 설정된 후
ip a
명령을 실행하여 IP 주소를 확인합니다. - 전용 IPv4 주소는 인스턴스 세부정보에 제공된 주소와 동일합니다.
- 전용 IPv6 주소는 인스턴스 세부정보에 제공된 주소와 동일합니다.
- 인터넷 연결을 테스트하기 위해 우리는 또한 Google의 DNS 서버 중 하나의 IPv6 IP 주소에 대한 핑을 수행합니다.
- 빠른 테스트를 수행하여 IPv6 주소를 사용하여 인스턴스에 접속할 수 있는지 확인합니다.
ssh -i ssh-key-2024-02-05.key opc@2603:xxxx:xxxx:xxxx:xxxx:xxxx:xxxx:xxxx
명령을 실행하여 테스트합니다. - 연결이 성공적으로 설정된 후
ip a
명령을 실행하여 IP 주소를 확인합니다. - 전용 IPv4 주소는 인스턴스 세부정보에 제공된 주소와 동일합니다.
- 전용 IPv6 주소는 인스턴스 세부정보에 제공된 주소와 동일합니다.
작업 5: 기본 보안 목록에서 HTTP 및 HTTPS 열기
새 VCN이 생성되면 기본 보안 목록이 해당 VCN 내의 서브넷에 적용됩니다. 기본적으로 ICMP 및 SSH는 인바운드(수신)가 허용됩니다. 웹 서버에 대한 수신 트래픽을 허용하려면 해당 목록에 HTTP 및 HTTPS를 추가해야 합니다.
-
햄버거 메뉴를 누르고 Virtual Cloud Networks(가상 클라우드 네트워크)를 선택합니다.
-
작업 1에서 생성한 VCN을 누릅니다.
-
아래로.
-
보안 목록을 누릅니다.
-
Default Security List를 누릅니다.
-
수신 규칙 추가를 누릅니다.
-
IPv4 네트워크 트래픽에 대한 새 보안 규칙을 추가합니다.
- 소스 유형: CIDR을 선택합니다.
- 소스 CIDR:
0.0.0.0/0
을 입력합니다. - IP 프로토콜: TCP를 선택합니다.
- 소스 포트 범위: 기본값(모두)을 유지합니다.
- 대상 포트 범위:
80,443
(HTTP 및 HTTPS)를 선택합니다. - 설명을 입력합니다.
- 수신 규칙 추가를 누릅니다.
-
HTTP 및 HTTPS 트래픽 인바운드 허용을 위해 IPv4 보안 규칙을 검토합니다.
-
IPv6 네트워크 트래픽에 대한 새 보안 규칙을 추가하려면 새 수신 규칙을 생성합니다. 수신 규칙 추가를 다시 누릅니다.
- 소스 유형: CIDR을 선택합니다.
- 소스 CIDR:
::/0
을 입력합니다. - IP 프로토콜: TCP를 선택합니다.
- 소스 포트 범위: 기본값(모두)을 유지합니다.
- 대상 포트 범위:
80,443
(HTTP 및 HTTPS)를 선택합니다. - 설명을 입력합니다.
- 수신 규칙 추가를 누릅니다.
-
HTTP 및 HTTPS 트래픽 인바운드 허용을 위해 IPv6 보안 규칙을 검토합니다.
보안 규칙이 적용되고 VCN 서브넷에서 IPv4 및 IPv6 트래픽이 허용됩니다. 인스턴스에 웹 서버 애플리케이션을 설치합니다.
작업 6: 인스턴스에 웹 서버 설치
웹 서버 응용 프로그램을 설치하기 전에 방화벽 포트가 올바르게 구성되었는지 신속하게 검증하십시오. 다음 웹 사이트 IPV6 Online Port Scanner를 사용하십시오. 이 웹 사이트에는 IPv6 포트 스캐너가 있지만 IPv4 주소를 입력할 수도 있습니다.
-
TCP 포트
80
에서 스캔을 수행하려면 세부정보와 함께 IPv4 주소를 입력합니다. 웹 서버 응용 프로그램이 아직 설치되지 않았으며 기본 보안 목록에 규칙을 추가했으므로 이 상태는 CLOSED이므로 FILTERED 상태가 아닙니다. -
IPv6 주소에 대해 다음 세부정보를 입력합니다. 동일한 이유로 출력은 IPv4와 동일합니다.
-
웹 서버 인스턴스 터미널 콘솔 또는 SSH에서. 다음 명령을 입력하여 DNF 소프트웨어 패키지 관리자를 업데이트하고 DNF 유틸리티를 설치합니다.
[opc@ih-webserver-01 ~]$ sudo dnf update -y [opc@ih-webserver-01 ~]$ sudo dnf install dnf-utils -y
-
nginx.repo
파일을 업데이트하여 NGINX 웹 서버 응용 프로그램을 다운로드하고 설치할 세부 정보를 지정합니다.[opc@ih-webserver-01 ~]$ sudo nano /etc/yum.repos.d/nginx.repo
다음 내용을 복사하여
nginx.repo
파일에 붙여넣습니다.[nginx-stable] name=nginx stable repo baseurl=http://nginx.org/packages/centos/$releasever/$basearch/ gpgcheck=1 enabled=1 gpgkey=https://nginx.org/keys/nginx_signing.key module_hotfixes=true [nginx-mainline] name=nginx mainline repo baseurl=http://nginx.org/packages/mainline/centos/$releasever/$basearch/ gpgcheck=1 enabled=0 gpgkey=https://nginx.org/keys/nginx_signing.key module_hotfixes=true
nginx.repo
파일의 내용을 확인합니다.[opc@ih-webserver-01 ~]$ sudo more /etc/yum.repos.d/nginx.repo [nginx-stable] name=nginx stable repo baseurl=http://nginx.org/packages/centos/$releasever/$basearch/ gpgcheck=1 enabled=1 gpgkey=https://nginx.org/keys/nginx_signing.key module_hotfixes=true [nginx-mainline] name=nginx mainline repo baseurl=http://nginx.org/packages/mainline/centos/$releasever/$basearch/ gpgcheck=1 enabled=0 gpgkey=https://nginx.org/keys/nginx_signing.key module_hotfixes=true [opc@ih-webserver-01 ~]$
-
기본적으로 안정적인 Nginx 패키지의 저장소가 사용됩니다. 메인라인 Nginx 패키지를 사용하려면 다음 명령을 실행합니다.
[opc@ih-webserver-01 ~]$ sudo yum-config-manager --enable nginx-mainline
-
다음 명령을 사용하여 NGINX 웹 서버 응용 프로그램을 설치합니다.
[opc@ih-webserver-01 ~]$ sudo dnf install nginx
-
NGINX 웹 서버 응용 프로그램을 시작하려면 다음 명령을 실행합니다.
[opc@ih-webserver-01 ~]$ sudo systemctl start nginx
-
설치가 완료되면 시스템 부트 시 NGINX가 자동으로 시작되고 웹 서버가 시작되도록 합니다.
[opc@ih-webserver-01 ~]$ sudo systemctl enable nginx Created symlink /etc/systemd/system/multi-user.target.wants/nginx.service → /usr/lib/systemd/system/nginx.service.
-
다음 명령을 사용하여 NGINX 웹 서버 응용 프로그램의 실행 상태를 확인합니다.
[opc@ih-webserver-01 ~]$ systemctl status nginx ● nginx.service - nginx - high performance web server Loaded: loaded (/usr/lib/systemd/system/nginx.service; enabled; vendor preset: disabled) Active: active (running) since Tue 2024-02-06 08:58:43 GMT; 2min 47s ago Docs: http://nginx.org/en/docs/ Main PID: 43323 (nginx) Tasks: 3 (limit: 99901) Memory: 2.8M CGroup: /system.slice/nginx.service ├─43323 nginx: master process /usr/sbin/nginx -c /etc/nginx/nginx.conf ├─43324 nginx: worker process └─43325 nginx: worker process Feb 06 08:58:43 ih-webserver-01 systemd[1]: Starting nginx - high performance web server... Feb 06 08:58:43 ih-webserver-01 systemd[1]: Started nginx - high performance web server. [opc@ih-webserver-01 ~]$
-
다음 명령을 사용하여 NGINX 웹 서버 응용 프로그램의 버전을 확인합니다.
[opc@ih-webserver-01 ~]$ nginx -v nginx version: nginx/1.25.3 [opc@ih-webserver-01 ~]$
-
firewalld
는 OCI의 Oracle Linux 배포에 설치되는 영역 기반 개인 방화벽입니다. VCN 서브넷의 기본 보안 목록을 통해 방화벽이 이미 구성되어 있습니다. 내부firewalld
서비스를 사용 안함으로 설정합니다. 다음 명령을 실행합니다.[opc@ih-webserver-01 nginx]$ sudo systemctl stop firewalld [opc@ih-webserver-01 nginx]$ sudo systemctl disable firewalld Removed /etc/systemd/system/multi-user.target.wants/firewalld.service. Removed /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service. [opc@ih-webserver-01 nginx]$ sudo setenforce 0 [opc@ih-webserver-01 nginx]$
-
웹 서버 서비스가 실행 중인지 확인하려면 리스너가 실행 중인지 확인합니다. 다음 명령을 실행합니다. 세 개의 NGINX 서비스가 모두 IPv4 및
80
포트에서 수신 대기하고 있습니다. 여기서 눈에 띄는 것은 IPv6 리스너가 누락되었다는 것입니다.[opc@ih-webserver-01 ~]$ sudo lsof -i -P -n | grep LISTEN systemd 1 root 71u IPv4 19039 0t0 TCP *:111 (LISTEN) systemd 1 root 82u IPv6 19041 0t0 TCP *:111 (LISTEN) rpcbind 1421 rpc 4u IPv4 19039 0t0 TCP *:111 (LISTEN) rpcbind 1421 rpc 6u IPv6 19041 0t0 TCP *:111 (LISTEN) osms-agen 2429 root 7u IPv6 41713 0t0 TCP 127.0.0.1:32768 (LISTEN) osms-agen 2429 root 10u IPv4 41722 0t0 TCP 127.0.0.1:9003 (LISTEN) pmcd 2469 pcp 0u IPv4 35603 0t0 TCP 127.0.0.1:44321 (LISTEN) pmcd 2469 pcp 3u IPv6 35604 0t0 TCP [::1]:44321 (LISTEN) pmlogger 3188 pcp 7u IPv4 42005 0t0 TCP 127.0.0.1:4330 (LISTEN) pmlogger 3188 pcp 8u IPv6 42006 0t0 TCP [::1]:4330 (LISTEN) sshd 6745 root 3u IPv4 54797 0t0 TCP *:22 (LISTEN) sshd 6745 root 4u IPv6 54799 0t0 TCP *:22 (LISTEN) nginx 43323 root 6u IPv4 98324 0t0 TCP *:80 (LISTEN) nginx 43324 nginx 6u IPv4 98324 0t0 TCP *:80 (LISTEN) nginx 43325 nginx 6u IPv4 98324 0t0 TCP *:80 (LISTEN)
-
또 다른 빠른 확인, 우리는 IPv4를 사용하여 기본 NGINX 웹 서버에 연결할 수 있는지 확인하기 위해 로컬 웹 서버에 컬을 수행합니다.
[opc@ih-webserver-01 ~]$ curl http://localhost <!DOCTYPE html> <html> <head> <title>Welcome to nginx!</title> <style> html { color-scheme: light dark; } body { width: 35em; margin: 0 auto; font-family: Tahoma, Verdana, Arial, sans-serif; } </style> </head> <body> <h1>Welcome to nginx!</h1> <p>If you see this page, the nginx web server is successfully installed and working. Further configuration is required.</p> <p>For online documentation and support please refer to <a href="http://nginx.org/">nginx.org</a>.<br/> Commercial support is available at <a href="http://nginx.com/">nginx.com</a>.</p> <p><em>Thank you for using nginx.</em></p> </body> </html> [opc@ih-webserver-01 ~]$
-
동일한 IPv6 온라인 포트 스캐너 웹 사이트를 사용하여 인터넷에서 동일한 테스트를 수행하고 이제 IPv4에 대해 포트가 OPEN입니다.
-
최종 테스트는 IPv4를 사용하는 원격 브라우저를 사용하여 웹 사이트 또는 웹 서버에 연결할 수 있는지 테스트하는 것입니다. 사용되는 URL은
http://144.xxx.xxx.xxx
입니다. -
NGINX 웹 서버 응용 프로그램을 설치했지만 IPv6 주소에 대해 다음과 같은 결과가 나타납니다.
이 문제를 해결하려면 웹 서버가 IPv6 주소를 수신하도록 구성되었는지 확인해야 합니다. 이렇게 하려면
default.conf
nginx 파일을 편집합니다.[opc@ih-webserver-01 conf.d]$ sudo nano /etc/nginx/conf.d/default.conf
구성 파일의 server 섹션은 다음과 같습니다.
server { listen 80; server_name localhost; #access_log /var/log/nginx/host.access.log main; location / { root /usr/share/nginx/html; index index.html index.htm; }
다음 라인을 서버 섹션에 추가합니다.
**listen [::]:80;**
server 섹션은 다음과 같습니다.
server { listen 80; **listen [::]:80;** server_name localhost; #access_log /var/log/nginx/host.access.log main; location / { root /usr/share/nginx/html; index index.html index.htm; }
업데이트 후에는
default.conf
파일이 표시됩니다.[opc@ih-webserver-01 conf.d]$ sudo more /etc/nginx/conf.d/default.conf server { listen 80; **listen [::]:80;** server_name localhost; #access_log /var/log/nginx/host.access.log main; location / { root /usr/share/nginx/html; index index.html index.htm; } #error_page 404 /404.html; # redirect server error pages to the static page /50x.html # error_page 500 502 503 504 /50x.html; location = /50x.html { root /usr/share/nginx/html; } # proxy the PHP scripts to Apache listening on 127.0.0.1:80 # #location ~ \.php$ { # proxy_pass http://127.0.0.1; #} # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000 # #location ~ \.php$ { # root html; # fastcgi_pass 127.0.0.1:9000; # fastcgi_index index.php; # fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name; # include fastcgi_params; #} # deny access to .htaccess files, if Apache's document root # concurs with nginx's one # #location ~ /\.ht { # deny all; #} } [opc@ih-webserver-01 conf.d]$
-
다음 명령을 사용하여 NGINX 웹 서버를 다시 시작합니다.
[opc@ih-webserver-01 ~]$ sudo systemctl restart nginx
-
다음 명령을 사용하여 리스너를 다시 확인합니다. 이제 NGINX가 IPv4 옆에 있는 IPv6에도 나열됩니다.
[opc@ih-webserver-01 conf.d]$ sudo lsof -i -P -n | grep LISTEN systemd 1 root 46u IPv4 19039 0t0 TCP *:111 (LISTEN) systemd 1 root 48u IPv6 19041 0t0 TCP *:111 (LISTEN) rpcbind 1421 rpc 4u IPv4 19039 0t0 TCP *:111 (LISTEN) rpcbind 1421 rpc 6u IPv6 19041 0t0 TCP *:111 (LISTEN) osms-agen 2429 root 7u IPv6 41713 0t0 TCP 127.0.0.1:32768 (LISTEN) osms-agen 2429 root 10u IPv4 41722 0t0 TCP 127.0.0.1:9003 (LISTEN) pmcd 2469 pcp 0u IPv4 35603 0t0 TCP 127.0.0.1:44321 (LISTEN) pmcd 2469 pcp 3u IPv6 35604 0t0 TCP [::1]:44321 (LISTEN) pmlogger 3188 pcp 7u IPv4 42005 0t0 TCP 127.0.0.1:4330 (LISTEN) pmlogger 3188 pcp 8u IPv6 42006 0t0 TCP [::1]:4330 (LISTEN) sshd 6745 root 3u IPv4 54797 0t0 TCP *:22 (LISTEN) sshd 6745 root 4u IPv6 54799 0t0 TCP *:22 (LISTEN) nginx 54944 root 6u IPv4 219674 0t0 TCP *:80 (LISTEN) nginx 54944 root 7u IPv6 219675 0t0 TCP *:80 (LISTEN) nginx 54945 nginx 6u IPv4 219674 0t0 TCP *:80 (LISTEN) nginx 54945 nginx 7u IPv6 219675 0t0 TCP *:80 (LISTEN) nginx 54946 nginx 6u IPv4 219674 0t0 TCP *:80 (LISTEN) nginx 54946 nginx 7u IPv6 219675 0t0 TCP *:80 (LISTEN) [opc@ih-webserver-01 conf.d]$
동일한 IPv6 온라인 포트 스캐너 웹 사이트를 사용하여 인터넷에서 동일한 테스트를 수행하고 이제 IPv6에 대해 포트가 OPEN입니다.
또 다른 빠른 확인, 우리는 IPv6를 사용하여 기본 NGINX 웹 서버에 연결할 수 있는지 확인하기 위해 로컬 웹 서버에 컬을 수행합니다.
[opc@ih-webserver-01 conf.d]$ curl -6 "http://[::1]:80" <!DOCTYPE html> <html> <head> <title>Welcome to nginx!</title> <style> html { color-scheme: light dark; } body { width: 35em; margin: 0 auto; font-family: Tahoma, Verdana, Arial, sans-serif; } </style> </head> <body> <h1>Welcome to nginx!</h1> <p>If you see this page, the nginx web server is successfully installed and working. Further configuration is required.</p> <p>For online documentation and support please refer to <a href="http://nginx.org/">nginx.org</a>.<br/> Commercial support is available at <a href="http://nginx.com/">nginx.com</a>.</p> <p><em>Thank you for using nginx.</em></p> </body> </html> [opc@ih-webserver-01 conf.d]$
-
최종 테스트는 IPv6를 사용하는 원격 브라우저를 사용하여 웹 사이트 또는 웹 서버에 연결할 수 있는지 테스트하는 것입니다. 사용되는 URL은
http://[2603:xxxx:xxxx:xxxx:xxxx:xxxx:xxxx:xxxx]
입니다.주: 브라우저에서 IPv6 주소를 사용하는 경우 대괄호 사이에 배치해야 합니다.
작업 7: DNS 레코드 구성
주: 이 자습서에서 사용한 도메인은 테스트 목적으로만 생성 및 구성되었습니다.
이제 웹 사이트 또는 웹 서버는 인터넷에서 연결할 수 있습니다. IPv4 주소 또는 IPv6 주소보다 더 쉽게 기억할 수 있는 FQDN을 구성하여 한 걸음 더 나아가려고 합니다. 이 자습서에서는 새 웹 서버에 대해 oci.iwanhoogendoorn.nl 하위 도메인을 예로 사용합니다.
-
iwanhoogendoorn.nl
도메인에 대한 레지스트라의 도메인 관리 패널에 로그인합니다.- 구성할 올바른 도메인을 선택했습니다.
- DNS Management를 선택합니다.
-
도메인 iwanhoogendoorn.nl에 대한 모든 DNS 레코드가 다음 이미지에 표시된 대로 나열됩니다.
- IPv4의 도메인에
oci
하위 도메인을 추가하고 인스턴스의 공용 IPv4 주소를 선택합니다. - 추가를 누릅니다.
- 이제 IPv6의 도메인에
oci
하위 도메인을 추가하고 인스턴스의 IPv6 주소를 선택합니다. - 추가를 누릅니다.
- DNS 개요 페이지에서 oci.iwanhoogendoorn.nl DNS 레코드(IPv4)를 검토합니다.
- DNS 개요 페이지에서 oci.iwanhoogendoorn.nl DNS 레코드(IPv6)를 검토합니다.
- IPv4의 도메인에
-
nslookup
명령을 사용하여 oci.iwanhoogendoorn.nl가 올바른 IPv4 주소로 확인되었는지 테스트합니다.iwanhoogendoorn@Iwans-MacBook-Pro ~ % nslookup oci.iwanhoogendoorn.nl
-
nslookup
명령을 사용하여 oci.iwanhoogendoorn.nl가 올바른 IPv6 주소로 확인되었는지 테스트합니다.iwanhoogendoorn@Iwans-MacBook-Pro ~ % nslookup -q=AAAA oci.iwanhoogendoorn.nl
작업 8 : NGINX 및 PHP로 사용자 정의 웹 사이트 만들기
우리는 NGINX와 네트워크 및 IP 주소에 대한 더 많은 정보를 제공하는 사용자 정의 PHP 웹 사이트 또는 스크립트를 만들 것입니다.
-
PHP FastCGI Process Manager (PHP-FPM)를 설치합니다. PHP-FPM은 웹 사이트가 높은 부하를 처리 할 수있는 PHP 용 대체 FastCGI 데몬입니다.
sudo dnf install php-fpm
-
설치된 PHP 버전을 확인합니다.
[opc@ih-webserver-01 /]$ php -v PHP 7.2.24 (cli) (built: Oct 22 2019 08:28:36) ( NTS ) Copyright (c) 1997-2018 The PHP Group Zend Engine v3.2.0, Copyright (c) 1998-2018 Zend Technologies [opc@ih-webserver-01 /]$
-
NGINX가 PHP와 함께 작동하도록하고 다른 방식으로 일부 구성을 수행해야합니다. PHP 측과 NGNIX 측에 하나의 구성 파일.
Linux 배포판, NGINX 및 PHP-FPM 버전에 따라 구성 파일 이름과 경로 이름이 다를 수 있으며 NGINX 및 PHP의 통합 부분이 훨씬 더 어려워집니다.
PHP-FPM 및 NGINX에 대한 중요한 파일 및 디렉토리.
설명 Oracle Linux 8 기타 설치/분배 NGINX 웹 루트 경로 /usr/share/nginx/html /usr/share/nginx/www PHP FPM 구성 파일 /etc/php-fpm.d/www.conf php-fpm.conf NGINX 구성 파일 /etc/nginx/conf.d/default.conf nginx.conf PHP FPM 소켓 파일 /run/php-fpm/www.sock php-fpm.sock, phpx.x-fpm.sock(x.x = 버전) FastCGI 설정 파일 /etc/nginx/fastcgi_params fastcgi.conf PHP 구성 파일 /etc/php.ini
NGINX를 PHP와 통합하려면 다음 단계를 수행하십시오.
-
PHP-FPM 구성 파일을 편집하여 NGINX 통합
/etc/php-fpm.d/www.conf
파일을 편집합니다.sudo nano /etc/php-fpm.d/www.conf
-
변경 전
/etc/php-fpm.d/www.conf
파일의 내용입니다.; Unix user/group of processes ; Note: The user is mandatory. If the group is not set, the default user's group ; will be used. ; RPM: apache user chosen to provide access to the same directories as httpd **user =** apache ; RPM: Keep a group allowed to write in log dir. **group =** apache
-
변경 후
/etc/php-fpm.d/www.conf
파일의 내용입니다.; Unix user/group of processes ; Note: The user is mandatory. If the group is not set, the default user's group ; will be used. ; RPM: apache user chosen to provide access to the same directories as httpd **user = nginx** ; RPM: Keep a group allowed to write in log dir. **group = nginx**
-
-
NGINX 구성 파일을 편집하여 PHP-FPM 통합
-
/etc/nginx/conf.d/default.conf
파일을 편집합니다.[opc@ih-webserver-01 html]$ sudo nano /etc/nginx/conf.d/default.conf
-
다음 구성을 추가합니다.
location / { **# where is the NGINX root www folder?** root /usr/share/nginx/html; # what are the default index files to look for in the directory? index **index.php** index.html index.htm; } # tell NGINX what to do when it sees PHP-FPM giving a 404 HTTP status in the response **location = /404.php { # where is the NGINX root www folder? root /usr/share/nginx/html; # not return error responses with relevant status codes fastcgi_intercept_errors off; # where is PHP-FPM listening? the socket fastcgi_pass unix:/var/run/php-fpm/www.sock; # everytime we're in this location, tell PHP-FPM the complete script filename to be executed fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; # and don't forget to tell PHP-FPM stuff like SERVER_NAME: include fastcgi_params; }** # tell NGINX what to do when it sees PHP-FPM a .php file **location ~ \.php$ { # where is the NGINX root www folder? root /usr/share/nginx/html; # define custom error pages error_page 404 /404.php; # return error responses with relevant status codes fastcgi_intercept_errors on; # where is PHP-FPM listening? the socket fastcgi_pass unix:/var/run/php-fpm/www.sock; # everytime we're in this location, tell PHP-FPM the complete script filename to be executed fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; # and don't forget to tell PHP-FPM stuff like SERVER_NAME: include fastcgi_params; }**
-
-
php.ini
구성 파일 편집.-
/etc/php.ini
파일을 편집합니다.[opc@ih-webserver-01 /]$ sudo nano /etc/php.ini
-
다음 행이 존재하는지, 변경되었는지 또는 주석이 해제되었는지 확인합니다.
cgi.fix_pathinfo = 0;
-
-
PHP-FPM 및 NGINX 서비스를 다시 시작합니다.
-
PHP-FPM 서비스를 다시 시작합니다.
sudo systemctl start php-fpm
-
NGINX 서비스를 다시 시작합니다.
sudo systemctl restart nginx
-
-
적절한 웹 페이지를 처리하고 테스트하기 위한 사용자정의 페이지를 생성합니다.
-
사용자정의
404.php
페이지를 생성합니다. 페이지가 존재하지 않고 액세스하려는 경우 사용자 정의 404 페이지로 재지정을 제대로 처리하려면 이 작업이 필요합니다.[opc@ih-webserver-01 html]$ sudo nano 404.php
사용자정의
404.php
페이지의 코드입니다.<?php header("HTTP/1.0 404 Not Found"); ?> <html> <head> <title>404 Error - Page Not Found</title> </head> <body>404 Error - Page Not Found!</body> </html>
-
사용자 정의
info.php
페이지를 생성합니다.[opc@ih-webserver-01 html]$ sudo nano info.php
info.php
페이지의 코드입니다.<?php phpinfo();
-
PHP가 NGNIX와 함께 작동한다는 증거를 제공하는
info.PHP
웹 사이트를 테스트하십시오.웹 사이트를 설치하고 올바르게 구성하면 다음 웹 페이지가 표시됩니다. 이 페이지에서는 접속에 사용하는 IP 버전에 따라 로컬 및 원격 IPv4 또는 IPv6 주소에 대한 정보를 제공합니다. 이 페이지에서는 사용 중인 프로토콜(HTTP 또는 HTTPS)에 대해서도 설명합니다.
-
작업 9: 인터넷에서 웹 서버 테스트
주: 이 자습서에서 사용한 도메인은 테스트 목적으로만 생성 및 구성되었습니다.
우리는 이미 여러 가지 방법을 사용하여 웹 사이트 또는 웹 서버의 접근성을 테스트했지만. 다음 웹 사이트를 사용하여 연결성과 DNS 레코드 구성을 한 번에 테스트하는 최종 테스트를 수행하고 싶습니다. IPv6 사이트가 준비되었습니까?
- FQDN oci.iwanhoogendoorn.nl을 사용하여 테스트합니다.
- IPv4 DNS 레코드가 올바르게 구성되었는지 확인합니다.
- IPv6 DNS 레코드가 올바르게 구성되었는지 확인합니다.
- IPv4에서 웹 사이트에 연결할 수 있는지 확인합니다.
- IPv6에서 웹 사이트에 연결할 수 있는지 확인합니다.
확인
- 작성자 - Iwan Hoogendoorn(OCI Network Specialist)
추가 학습 자원
docs.oracle.com/learn에서 다른 실습을 살펴보거나 Oracle Learning YouTube 채널에서 더 많은 무료 학습 콘텐츠에 액세스하십시오. 또한 education.oracle.com/learning-explorer를 방문하여 Oracle Learning Explorer가 되십시오.
제품 설명서는 Oracle Help Center를 참조하십시오.
Use Oracle Cloud Infrastructure to Publish a Webserver Accessible from the Internet with IPv6
F93545-01
February 2024
Copyright © 2024, Oracle and/or its affiliates.