아파치 2.4 + PHP-FPM + ProxyPassMatch


31

최근에 PHP-FPM을 사용하여 PHP 5.4.8과 함께 로컬 컴퓨터에 Apache 2.4를 설치했습니다.

모든 것이 순조롭게 진행되었지만 (잠깐 후 ...) 여전히 이상한 오류가 있습니다.

다음과 같이 PHP-FPM 용 Apache를 구성했습니다.

<VirtualHost *:80>
    ServerName localhost
    DocumentRoot "/Users/apfelbox/WebServer"
    ProxyPassMatch ^/(.*\.php(/.*)?)$ fcgi://127.0.0.1:9000/Users/apfelbox/WebServer/$1
</VirtualHost>

예를 들어 전화 http://localhost/info.php하면 올바른 결과를 얻을 수 있습니다 phpinfo()(테스트 파일 일뿐입니다).

그러나 디렉토리를 호출하면 본문 File not found.과 오류 로그에 404가 표시됩니다 .

[Tue Nov 20 21:27:25.191625 2012] [proxy_fcgi:error] [pid 28997] [client ::1:57204] AH01071: Got error 'Primary script unknown\n'

최신 정보

이제 mod_rewrite를 사용하여 프록 싱을 시도했습니다.

<VirtualHost *:80>
    ServerName localhost
    DocumentRoot "/Users/apfelbox/WebServer"

    RewriteEngine on    
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^/(.*\.php(/.*)?)$ fcgi://127.0.0.1:9000/Users/apfelbox/WebServer/$1 [L,P]
</VirtualHost>

그러나 문제는 : http://localhost/자동 http://localhost/index.php으로 요청 되기 때문에 항상 리디렉션됩니다.

DirectoryIndex index.php index.html

업데이트 2

"프록시에 먼저 줄 파일이 있는지 확인할 수있을 것입니다.

<VirtualHost *:80>
    ServerName localhost
    DocumentRoot "/Users/apfelbox/WebServer"

    RewriteEngine on    
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} -f
    RewriteRule ^/(.*\.php(/.*)?)$ fcgi://127.0.0.1:9000/Users/apfelbox/WebServer/$1 [L,P]
</VirtualHost>

이제 완전한 재 작성이 더 이상 작동하지 않습니다 ...

업데이트 3

이제이 솔루션이 있습니다.

<VirtualHost *:80>
    ServerName localhost
    DocumentRoot "/Users/apfelbox/WebServer"

    RewriteEngine on    
    RewriteCond /Users/apfelbox/WebServer/%{REQUEST_FILENAME} -f
    RewriteRule ^/(.*\.php(/.*)?)$ fcgi://127.0.0.1:9000/Users/apfelbox/WebServer/$1 [L,P]
</VirtualHost>

먼저, 전체 경로 와 절대 경로를 사용하여 PHP-FPM에 전달할 파일이 있는지 확인한 다음 다시 작성하십시오.

하위 디렉토리 내에서 URL 다시 쓰기를 사용할 때는 작동하지 않으며 http://localhost/index.php/test/ So 와 같은 URL은 정사각형으로 돌아갑니다.


어떤 아이디어?

답변:


34

몇 시간 동안 Apache 문서를 검색하고 읽은 후에는 풀을 사용할 수있는 솔루션을 찾았으며 URL에 .php 파일이 포함되어 있어도 .htaccess의 Rewrite 지시문이 작동하도록 허용했습니다.

<VirtualHost ...>

 ...

 # This is to forward all PHP to php-fpm.
 <FilesMatch \.php$>
   SetHandler "proxy:unix:/path/to/socket.sock|fcgi://unique-domain-name-string/"
 </FilesMatch>

 # Set some proxy properties (the string "unique-domain-name-string" should match
 # the one set in the FilesMatch directive.
 <Proxy fcgi://unique-domain-name-string>
   ProxySet connectiontimeout=5 timeout=240
 </Proxy>

 # If the php file doesn't exist, disable the proxy handler.
 # This will allow .htaccess rewrite rules to work and 
 # the client will see the default 404 page of Apache
 RewriteCond %{REQUEST_FILENAME} \.php$
 RewriteCond %{DOCUMENT_ROOT}/%{REQUEST_URI} !-f
 RewriteRule (.*) - [H=text/html]

</VirtualHost>

Apache 문서에 따라 SetHandler 프록시 매개 변수에는 Apache HTTP Server 2.4.10이 필요합니다.

이 솔루션이 도움이되기를 바랍니다.


2
이것은 확실히 2015 년의 해답입니다. 여기에있는 다른 모든 것은 현대적인 설정을위한 쓰레기입니다 (데비안 안정이라고합시다)
Dmitri DB

1
나는이 문제에 대해 오랫동안 벽에 머리를 대고 있었고, 당신과 매우 비슷한 설정을 가지고 있습니다. .htaccess Rewrite 지시문을 게시 하시겠습니까? 내가 이해 한 바에 따르면,이 답변의 모든 것은 httpd.d / site.conf 파일에있는 것입니다.
David W

1
현재이 RewriteRule을 사용하면 config.php 파일이 Aliased 디렉토리에 있고 % {DOCUMENT_ROOT} / % {REQUEST_URI}에없는 경우 일반 파일을 노출 할 수 있으므로 매우 위험 해 보입니다 .
Zulakis

1
놀라운 9 줄의 코드. 이것은 성배이며 나를 위해 100 % 효과가있는 유일한 것입니다. 참고 사항 : LocationMatch를 사용하여 솔루션에서 전환하는 경우 절대 파일 경로를 fcgi url에 추가 할 필요가 없습니다. 프록시를 켜고 아파치에서 로깅을 다시 작성하여이를 감시하십시오.
Phil

1
+1이 게시물은 내가 본 다른 모든 리소스와 달리 "unique-domain-name-string"이 무엇을 나타내는 지 이해하는 데 도움이 되었기 때문입니다.
threeve

10

어제 나도이 문제에 부딪쳤다 – Apache 2.4는 Debian / experimental 에서 Debian / unstable로 옮겨서이 새로운 것들을 다루도록 강요했다. 물론 프로덕션 서버에는 없습니다.).

오류 로그에서 수백만 개의 사이트, Apache 문서, 버그 보고서 및 디버깅 출력을 읽은 후 마침내 작동하게되었습니다. 아니요, 아직 소켓이있는 FPM은 지원 되지 않습니다. 기본 데비안 설정은 한동안 소켓을 사용하고 있었으므로 데비안 사용자도 그 설정을 변경해야합니다.

다음은 CakePHP 사이트와 PHPMyAdmin에서 작동하는 것입니다 (데비안 패키지를 사용하는 경우 후자가 약간의 구성이 필요합니다). 그래서 mod_rewrite멋진 URL 재 작성이 예상대로 작동 하는지 확인할 수 있습니다 .

주의 사항 DirectoryIndex index.php은 구성 중 "폴더"에 대해 작동하지 않은 이유 일 수 있습니다 (적어도 여기서 작동하지 않은 것입니다).

나는 여전히 File not found.디렉토리를 얻지 만 인덱스 파일이없는 경우에만 구문 분석 할 수 있습니다. 그것도 없애고 싶지만 현재로서는 그렇게 중요하지 않습니다.


<VirtualHost *:80>
    ServerName site.localhost

    DocumentRoot /your/site/webroot
    <Directory />
            Options FollowSymlinks
            DirectoryIndex index.php
            AllowOverride All
            Require all granted
    </Directory>

    <LocationMatch "^(.*\.php)$">
            ProxyPass fcgi://127.0.0.1:9000/your/site/webroot
    </LocationMatch>

    LogLevel debug
    ErrorLog /your/site/logs/error.log
    CustomLog /your/site/logs/access.log combined
</VirtualHost>

위의 호스트는 다음과 같이 루트의 .htaccess와 완벽하게 작동합니다.

<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^(.*)$ index.php [QSA,L]
</IfModule>

나는 당신이 의미하는 바를 정확히 얻지 못합니다 URL rewriting inside a subdirectory(루트의 index.php에만 다시 쓰고 있습니다).


(아, Xdebug가 시스템의 FPM과 충돌하지 않는지 확인해야합니다. 동일한 포트를 사용하려는 경우에 한해)


이것은 좋은 해결책이지만 불행히도 .php를 포함하는 URL을 WordPress 멀티 사이트와 같이 다시 작성 해야하는 경우이 방법은 작동하지 않습니다. /ms_blog_1/wp-admin/load-scripts.php?blah=blah
Phil

나를 위해 DirectoryIndex index.html문제의 호스트에 재정의 를 추가하면 문제가 해결되었습니다. 내가 있으면 DirectoryIndex index.php다른 PHP 파일에서 '파일을 찾을 수 없음'및 '기본 스크립트를 알 수 없습니다'오류가 발생하는 것으로 보입니다. 제 경우 index.html에는 PHP 파일이 test.php있습니다.
geerlingguy

4

당신이해야 할 모든 설정 :

 ProxyErrorOverride on

다음을 통해 고객 페이지를 설정하는 것을 잊지 마십시오.

ErrorDocument 404 /path/to/error_page_file    

2

이것이 내가 가진 것입니다. 제대로 작동하는 것 같습니다. Drupal을 하위 디렉토리에 넣고 재 작성 작업, 디렉토리 색인 작업 및 PATH_INFO가 작동합니다.

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} ^/((.*\.php)(/.*)?)$
RewriteCond %2 -f
RewriteRule . fcgi://127.0.0.1:9000/%1 [L,P]
RewriteOptions Inherit

다시 작성하지 않고 ( "If"등) 이와 같은 작업을 시도했지만 아무 작업도 수행 할 수 없습니다.

편집 : 공유 호스팅 공급자로 이것을 구현하는 경우 이것은 보안 문제 일 수 있습니다. 사용자가 PHP 스크립트를 임의의 fcgi 프록시로 전달할 수 있습니다. 모든 사용자에 대해 별도의 풀이있는 경우 권한 상승 공격이 허용됩니다.


2

또 다른 솔루션 (Apache> = 2.4.10 필요)-호스트 내부 :

# define worker
<Proxy "unix:/var/run/php5-fpm-wp.bbox.nuxwin.com.sock|fcgi://domain.tld" retry=0>
    ProxySet connectiontimeout=5 timeout=7200
</Proxy>

<If "%{REQUEST_FILENAME} =~ /\.php$/ && -f %{REQUEST_FILENAME}">
    SetEnvIfNoCase ^Authorization$ "(.+)" HTTP_AUTHORIZATION=$1
    SetHandler proxy:fcgi://domain.tld
</If>

따라서 여기서 PHP 용 fcgi 핸들러는 파일이 존재하고 파일 이름이 PHP 파일 확장자와 일치하는 경우에만 설정됩니다.

BTW : ProxyErrorOverrideOn 으로 설정하려는 아이디어를 가진 사람들에게는 이것이 실제로 나쁜 아이디어라는 것을 명심하십시오. 이 지시문의 사용법은 문제를 일으키지 않습니다. 예를 들어, 503과 같은 HTTP 코드를 보내는 PHP 응용 프로그램은 예기치 않은 결과를 초래할 수 있습니다. 기본 오류 처리기는 API를 제공하는 모든 경우와 PHP 응용 프로그램과 관련이 있으며 이는 실제로 나쁜 동작입니다.


불행히도이 솔루션을 사용하여 여전히 "AH01071 : 오류 '기본 스크립트를 알 수 없습니다 \ n'"오류가 발생했습니다.
klor

1

이를 해결하는 가장 좋은 방법은 mod_proxy 및 mod_rewrite 및 php-fpm에 대한 디버깅 로그를 설정하는 것입니다. Apache 2.4에서는 특정 모듈에 대해서만 디버깅 로그를 켤 수 있습니다. http://httpd.apache.org/docs/current/mod/core.html#loglevel 모듈 및 디렉토리 별 구성은 Apache HTTP Server 2.3.6 이상에서 사용 가능합니다.

디렉토리에 이중 슬래시가 표시됩니까?

여기 내가 사용하는 것이 있으며 정상적으로 작동합니다.

<LocationMatch ^(.*\.php)$>
  ProxyPass fcgi://127.0.0.1:9000/home/DOMAINUSER/public_html$1
</LocationMatch>

1

이 문제를 처리 할 때 내가 만난 한 가지는 다음 조합을 사용하는 것입니다.

chroot = /path/to/site
chdir = /

fpm 풀 구성에서 ProxyPass지시문 의 전체 경로를 전달하지 마십시오 .

ProxyPass fcgi://127.0.0.1:9020/$1

그러나 해당 포트의 풀이 chroot 된 경우 -ONLY-


1

문제가 관련되어 있는지 확실하지 않지만 부분적으로 작동하는 해결책을 찾았습니다.

https://stackoverflow.com/questions/44054617/mod-rewrite-in-2-4-25-triggering-fcgi-primary-script-unknown-error-in-php-fpm

트릭은? .htaccess RewriteRule의 char, 예 :

RewriteRule ^(.*)$ index.php?/$1 [L,NS]

대신에:

RewriteRule ^(.*)$ index.php/$1 [L,NS]

문제의 원인은 Apache 2.4.25의 mod_rewrite에서 변경된 것으로 보입니다. index.php / $ 1이 전달 된 후 Apache trace1 로그 레벨을 사용하여 $ 1을 php-fpm으로 전달하는 "루프"를 관찰했습니다. $ 1은 "AH01071 : 오류 '기본 스크립트를 알 수 없습니다 \ n'"오류를 생성합니다.

이 작은 음식이 누군가의 문제 해결에 도움이되기를 바랍니다.



0

드루팔 인스턴스의 경우 PHP-fpm + Apache 2.4.6으로 전환 한 후에도 오류가 발생합니다.

하지만 mpm 이벤트 모드를 사용하고 있습니다.

그냥 삽입

DirectoryIndex index.php 나를 위해 일한다

내 호스트 설정은 다음과 같습니다

<VirtualHost *:8080>
  ServerAdmin webmaster@localhost
  ServerName sever.com
  DocumentRoot /var/www/html/webroot
    ErrorLog logs/web-error_log
    CustomLog logs/web-access_log common
<IfModule mpm_event_module>
    ProxyPassMatch ^/(.*\.php(/.*)?)$ fcgi://127.0.0.1:9000/var/www/html/webroot/$1
</IfModule>
  <Directory /var/www/html/webroot>
     Options FollowSymlinks
     DirectoryIndex index.php
     AllowOverride All
     Require all granted
  </Directory>
</VirtualHost>

감사

drupal의 기본 .htaccess 파일을 수정할 필요가 없습니다.


[수 4 월 25 일 01 : 41 : 31.526781 2018] [proxy_fcgi : error] [pid 2012 : tid 140181155772160] (70007) 지정된 시간 초과가 만료되었습니다 : [client 127.0.0.1:60308] AH01075 :에 요청을 발송하는 중 오류가 발생했습니다. www / admin / reports
sealionking

0

내 서버 (centos 7.3.16 docker)에서 동일한 문제에 직면합니다. php-fpm log 추적 후 sys lib가 누락되었습니다. WARNING: [pool www] child 15081 said into stderr: "php-fpm: pool www: symbol lookup error: /lib64/libnsssysinit.so: undefined symbol: PR_GetEnvSecure" 그런 다음 nspr을 모두 닫습니다. 작동하는 방법을 시도한 후에도 솔루션을 찾을 수 없으면 시도해보십시오. yum -y install/reinstall nspr


0

이것은 Wordpress 5.1.1 이상에서 PHP 7.3, FastCGI, 프록시 및 MariaDB / MySQL과 함께 작동합니다. 내 서버에서 두 번 확인했습니다. 매력처럼 작동합니다.

CentOS / Fedora / Red Hat에서 1 위

sudo yum remove php*
sudo yum --enablerepo=extras install epel-release
sudo yum install php-fpm php-mysql php-gd php-imap php-mbstring 
sudo grep -E '(proxy.so|fcgi)' /etc/httpd/conf.modules.d/00-proxy.conf
sudo mv /etc/httpd/conf.d/php.conf /etc/httpd/conf.d/php.conf_bak

이 파일을 편집하십시오 :

sudo nano /etc/php-fpm.d/www.conf

붙여 넣기

[www]

; The address on which to accept FastCGI requests.
; Valid syntaxes are:
;   'ip.add.re.ss:port'    - to listen on a TCP socket to a specific address on
;                            a specific port;
;   'port'                 - to listen on a TCP socket to all addresses on a
;                            specific port;
;   '/path/to/unix/socket' - to listen on a unix socket.
; Note: This value is mandatory.
listen = 127.0.0.1:9000
listen = /run/php-fcgi.sock

sudo ll /run/php-fcgi.sock

srw-rw-rw-를 제공해야합니다.

또는 데비안 / 우분투에서 설정하는 방법

지도 시간:

출처 : https://emi.is/?page=articles&article=php-7-installation-and-configuration-for-apache-2.4-using-php-fpm-(debian,-repository)


sudo apt purge 'php*' or sudo apt-get purge 'php*'
sudo add-apt-repository ppa:ondrej/php
sudo apt-get update
sudo apt install php7.3 php7.3-fpm php-mysql php-mbstring php-gd php-imap libapache2-mod-security2 modsecurity-crs
systemctl status php7.3-fpm
systemctl stop php7.3-fpm.service

sudo a2dismod php7.0 php7.1 php7.2 mpm_event mpm_worker
sudo a2enmod mpm_prefork
sudo a2enmod php7.3
sudo systemctl restart apache2 (httpd in CentOS)

문제는 Ondrej repo의 PHP 7.3이 mpm_prefork 모드에서만 작동한다는 것입니다. 그는 git repo를 가지고 있으므로 net에서 그를 찾을 수 있으며 mpm_worker와 mpm_event에 대해 PHP 7.3을 만들 것입니다. 데비안 제품군 배포판의 나머지 구성은 다음과 같습니다.


sudo apt --assume-yes install php7.3-fpm
sudo systemctl stop php7.3-fpm.service
sudo rm /var/log/php7.0-fpm.log
sudo mkdir /var/log/php7.3-fpm/
sudo touch /var/log/php7.3-fpm/error.log
sudo mkdir /var/log/php7.3/
sudo touch /var/log/php7.3/error.log
sudo mkdir /var/tmp/php7.3/
sudo > /etc/php/7.3/fpm/php.ini
sudo > /etc/php/7.3/fpm/php-fpm.conf
sudo rm /etc/php/7.3/fpm/pool.d/www.conf
sudo touch /etc/php/7.3/fpm/pool.d/example.com.conf
sudo useradd --comment "PHP" --shell "/usr/sbin/nologin" --system --user-group php

sudo nano /etc/php/7.3/fpm/php.ini


[PHP]
date.timezone = Europe/Prague
display_errors = Off
error_log = /var/log/php7.3/error.log
error_reporting = 32767
log_errors = On
register_argc_argv = Off
session.gc_probability = 0
short_open_tag = Off
upload_tmp_dir = /var/tmp/php7.3/

sudo nano /etc/php/7.3/fpm/php-fpm.conf


[global]
error_log = /var/log/php7.3-fpm/error.log
include = /etc/php/7.3/fpm/pool.d/*.conf

sudo nano /etc/php/7.3/fpm/pool.d/example.com.conf


[example.com]
group = php
listen = 127.0.0.1:9000
pm = ondemand
pm.max_children = 5
pm.max_requests = 200
pm.process_idle_timeout = 10s
user = php

sudo nano /etc/logrotate.d/php7.3-fpm

이것을 txt 파일로 복사하십시오.

/var/log/php7.3-fpm.log {
    rotate 12
    weekly
    missingok
    notifempty
    compress
    delaycompress
    postrotate
            /usr/lib/php/php7.3-fpm-reopenlogs
    endscript
}

그것을 제거한 다음 위에 대신 붙여 넣으십시오.

/var/log/php7.3/*.log /var/log/php7.3-fpm/*.log
{
copytruncate
maxage 365
missingok
monthly
notifempty
rotate 12
}

지시문 추가

sudo nano /etc/apache2/sites-available/example.com.conf


<VirtualHost *:80>
    ServerName www.example.com
    ServerAlias example.com
    ServerAdmin admin@example.com
    DocumentRoot /var/www/html/example.com/public_html
    DirectoryIndex index.php index.htm index.html index.xht index.xhtml
    LogLevel info warn
    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined

    <FilesMatch "^\.ht">
    Require all denied
    </FilesMatch>

    <files readme.html>
    order allow,deny
    deny from all
    </files>

    RewriteEngine on
    RewriteCond %{SERVER_NAME} =example.com
    RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [END,NE,R=permanent]
    ProxyPassMatch ^/(.*\.php(/.*)?)$ fcgi://127.0.0.1:9000/var/www/html/example.com/public_html

    <Directory /var/www/html/example.com/public_html>
        Options Indexes FollowSymLinks Includes IncludesNOEXEC SymLinksIfOwnerMatch
        AllowOverride None
    </Directory>
</VirtualHost>

그런 다음 사이트를 활성화하십시오.

sudo a2ensite /etc/apache2/sites-available/example.com.conf

다음 SSL 사이트 편집 (이 경우 Let 's Encrypt의 certbot이 SSL 인증서 구성의 시작 부분에 이전에 설치 및 구성되었습니다).

sudo nano /etc/apache2/sites-available/example.com-le-ssl.conf

<IfModule mod_ssl.c>
    #headers for security man in the middle attack find how to enable this mod in Google
    LoadModule headers_module modules/mod_headers.so
    <VirtualHost *:443>
        Header always set Strict-Transport-Security "max-age=15768000"
        SSLEngine On
        ServerName example.com
        ServerAdmin admin@example.com
        DocumentRoot /var/www/html/example.com/public_html
        <Directory /var/www/html/example.com/public_html>
        Options Indexes FollowSymLinks Includes IncludesNOEXEC SymLinksIfOwnerMatch
        AllowOverride All
        Require all granted
        DirectoryIndex index.php
        RewriteEngine On
         <FilesMatch ^/(.*\.php(/.*)?)$>
           SetHandler "fcgi://example.com:9000/var/www/html/example.com/public_html"
          </FilesMatch>
        </Directory>
    # Log file locations
    #LogLevel info ssl:warn
    LogLevel debug
    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined

    # modern configuration
    SSLCertificateFile /etc/letsencrypt/live/example.com/fullchain.pem
    SSLCertificateKeyFile /etc/letsencrypt/live/example.com/privkey.pem
    Include /etc/letsencrypt/options-ssl-apache.conf
    SSLProtocol all -SSLv3 -TLSv1 -TLSv1.1
    #SSLCipherSuite HIGH:!aNULL:!MD5
    SSLCipherSuite ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM$
    SSLHonorCipherOrder on
    SSLCompression off
    SSLSessionTickets off

    <FilesMatch "^\.ht">
    Require all denied
    </FilesMatch>

    <files readme.html>
       order allow,deny
       deny from all
    </files>

</VirtualHost>
    #Stapling OCSP for Let's Encrypt certs.
    SSLUseStapling          on
    SSLStaplingResponderTimeout     5
    SSLStaplingReturnResponderErrors        off
    SSLStaplingCache        shmcb:/var/run/ocsp(128000)
</IfModule>

sudo a2enmod proxy proxy_fcgi setenvif
sudo systemctl reload apache2.service
sudo chown --recursive root:adm /etc/php/
sudo chmod --recursive 0770 /etc/php/
sudo chown --recursive php:adm /var/log/php7.3/
sudo chown --recursive php:adm /var/log/php7.3-fpm/
sudo chmod --recursive 0770 /var/log/php7.3/
sudo chmod --recursive 0770 /var/log/php7.3-fpm/
sudo chown --recursive php:php /var/tmp/php7.3/
sudo chmod --recursive 0770 /var/tmp/php7.3/
sudo a2enconf php7.3-fpm
sudo systemctl enable php7.3-fpm.service
sudo systemctl start php7.3-fpm.service

데비안 / 우분투의 방화벽에 포트 9000을 추가해야합니다.

sudo ufw allow 9000/tcp
sudo ufw status

CentoOS / Fedora / Red Hat에서

sudo firewall-cmd --zone=public --add-port=9000/tcp --permanent
sudo firewall-cmd --reload
sudo firewall-cmd --list-all
sudo firewall-cmd --state 
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.