Nginx는 포트에서 수신 대기하며 포트 80으로 설정된 경우에만 응답합니다


10

운영체제 : Funtoo. NGINX를 포트 81에 바인딩했으며 (전환을 쉽게하기 위해 짧은 시간 동안 Apache 서버와 함께 실행하고 싶습니다) 포트에서 수신 대기합니다 (wget을 사용하여 다른 포트를 가리키면 "연결이 거부되었습니다", 그러나 포트 81을 사용하면 "connected"가 표시되지만 HTML 응답을 전혀 제공하지 않습니다!

포트에서 wget을 실행할 때 localhost에서 다음을 얻습니다.

# wget localhost:81
-2014-04-16 23:56:45- http://localhost:81/
Resolving localhost... 127.0.0.1
Connecting to localhost|127.0.0.1|:81... connected.
HTTP request sent, awaiting response...

다른 컴퓨터에서 ...

$ wget 192.168.18.42:81
-2014-04-16 23:57:19- http://192.168.18.42:81/
Connecting to 192.168.18.42:81... connected.
HTTP request sent, awaiting response...

그 후에는 아무 일도 일어나지 않습니다. 문서가 존재하며 일반적인 Funtoo nginx.conf입니다.

업데이트 : 포트 80을 청취 할 수는 있지만 여전히 포트에서 작동하도록 할 수 없다는 소리가 들립니다 ....

netstat -aWn | grep 81 | grep LISTEN
tcp 60 0 0.0.0.0:81 0.0.0.0:* LISTEN

편집 : 구성 파일 :

user nginx nginx;
worker_rlimit_nofile 6400;

error_log /var/log/nginx/error_log info;

events {
    worker_connections 1024;
    use epoll;
}

http {
    include /etc/nginx/mime.types;

    # This causes files with an unknown MIME type to trigger a download action in the browser:
    default_type application/octet-stream;

    log_format main
        '$remote_addr - $remote_user [$time_local] '
        '"$request" $status $bytes_sent '
        '"$http_referer" "$http_user_agent" '
        '"$gzip_ratio"';

    client_max_body_size 64m;

    # Don't follow symlink if the symlink's owner is not the target owner.

    disable_symlinks if_not_owner;
    server_tokens off;
    ignore_invalid_headers on;

    gzip off;
    gzip_vary on;
    gzip_types text/plain text/css application/json application/x-javascript text/xml application/xml application/xml+rss text/javascript application/javascript text/x-js image/x-icon image/bmp;

    sendfile on;
    tcp_nopush on;
    tcp_nodelay on;

    index index.html;
    include /etc/nginx/sites-enabled/*;
}

서버 블록 :

server {
    listen  *:81;
    root    /usr/share/nginx/html;
    location / {
        index   index.html;
    }
}

패킷 필터가 활성화되어 iptables있습니까 ( )? 그렇다면 포트 81을 허용 한 것을 기억하십니까?
Andreas Wiese

iptables가 활성화되어 있지 않습니다.
Aviator45003

2
그런 다음 구성의 관련 부분이 도움이 될 것입니다.
Andreas Wiese

답변:


5

다음 서버 블록을 시도하십시오.

server {
   listen       81 default_server;
    server_name _;    
    root    /usr/share/nginx/html;
    location / {
        index   index.html;
    }
}

밑줄 _은 와일드 카드입니다. 또한 *:81예상 한대로하지 않으면 포트 번호 만 사용하십시오.

그런 다음 다음을 사용하여 설정을 테스트하십시오 nginx -t.

nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

nginx를 다시 시작하십시오.

service nginx restart

netstat로 테스트하십시오.

root@gitlab:~# netstat -napl | grep 80
tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN      7903/nginx      
tcp        0      0 127.0.0.1:8080          0.0.0.0:*               LISTEN      2662/unicorn.

최신 정보

테스트 시스템에 nginx를 설치했습니다. 스톡 nginx.conf파일과로 한 줄 변경하여 /etc/nginx/sites-enabled/default포트 81에서 파일을 검색 할 수있었습니다.

cat /etc/nginx/sites-enabled/default
server {

    listen   81;
    server_name localhost;
    root /usr/share/nginx/www;
    index index.html index.htm;


    location / {
        try_files $uri $uri/ /index.html;
    }

    location /doc/ {
        alias /usr/share/doc/;
        autoindex on;
        allow 127.0.0.1;
        deny all;
    }

}

Netstat 출력 :

netstat -napl | grep 81
tcp        0      0 0.0.0.0:81              0.0.0.0:*               LISTEN      3432/nginx

파일 다운로드 :

$ wget localhost:81

파일 내용 :

$ cat index.html
<html>
<head>
<title>Welcome to nginx!</title>
</head>
<body bgcolor="white" text="black">
<center><h1>Welcome to nginx!</h1></center>
</body>
</html>

업데이트 2

테스트 포트 :

 root@gitlab:# nc -vz localhost 81
 Connection to localhost 81 port [tcp/*] succeeded!
 root@gitlab:# nc -vz localhost 443
 nc: connect to localhost port 443 (tcp) failed: Connection refused

Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name tcp 9 0 0.0.0.0:81 0.0.0.0:* LISTEN 1026/nginx: master 여전히 성공하지 못했습니다. Recv-Q가 9의 힌트입니까? 내가 wget이나 그와 비슷한 것을 시도 할 때마다 올라갑니다. 서버 블록은 처방 한 그대로입니다.
Aviator45003

Recv-Q가 무엇인지 잘 모르겠습니다. / etc / nginx / sites-available에 무엇입니까?
spuder

1
@TC 업데이트 된 답변을 참조하십시오.
spuder

새 구성 파일을 따라도 내 상태가 변경되지 않습니다. 포트 80이 아닌 차단 포트가있을 수 있습니까? 이것을 테스트 할 수있는 방법이 있습니까?
Aviator45003

1
TC 예, nc 사용, 업데이트 참조
spuder

4

큰 문제가 나옵니까? Nginx는 worker_processes를 0으로 설정했습니다. auto나는 nginx.conf의 맨 위에 줄 설정을 추가 했으며 모두 세상과 잘 어울 렸습니다!

시간과 인내심에 감사드립니다.


약 1 시간의 좌절 후 포기하지 않아도됩니다. 아마도 Nginx 구성 출력 a 0를 템플릿 화하는 데 사용되는 자동화 된 변수 중 하나는 worker_processes다른 구성 파일, DNS, 호스트 등을 4 번씩 확인한 후 완전히 흐트러졌습니다.
geerlingguy
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.