다른 포트를 통해 nginx를 시작하는 방법 (80 이외)


128

안녕하세요, nginx의 초보자입니다. 아파치가 이미 실행중인 서버 (Ubuntu 4를 실행 중)에 설정하려고했습니다.

그래서 나는 apt-get install그것을 nginx를 시작하려고했습니다. 그런 다음 다음과 같은 메시지가 나타납니다.

Starting nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
configuration file /etc/nginx/nginx.conf test is successful
[emerg]: bind() to 0.0.0.0:80 failed (98: Address already in use)
[emerg]: bind() to 0.0.0.0:80 failed (98: Address already in use)
[emerg]: bind() to 0.0.0.0:80 failed (98: Address already in use)
[emerg]: bind() to 0.0.0.0:80 failed (98: Address already in use)
[emerg]: bind() to 0.0.0.0:80 failed (98: Address already in use)

아파치가 포트 80을 사용하는 것처럼 말이된다.

그런 다음 수정하려고했는데 nginx.conf기사를 참조 했으므로 다음과 같이 변경했습니다.

   server {

        listen       8080;

        location / {
         proxy_pass  http://xx.xx.xx.xx:9500;
         proxy_set_header   Host             $host:8080;
         proxy_set_header   X-Real-IP        $remote_addr;
         proxy_set_header   X-Forwarded-For  $proxy_add_x_forwarded_for;
         proxy_set_header Via    "nginx";
        }

이것을 저장하고 nginx를 다시 시작하려고 시도해도 여전히 이전과 같은 오류가 발생합니다. 나는 이것에 관한 관련 게시물을 실제로 찾을 수 없습니다. 좋은 사람들이 약간의 빛을 could 수 있습니까?

미리 감사드립니다 :)

===================================================== =======================

conf의 모든 내용을 여기에 게시해야합니다.

user www-data;
worker_processes  1;

error_log  /var/log/nginx/error.log;
pid        /var/run/nginx.pid;

events {
    worker_connections  1024;
    # multi_accept on;
}

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

    access_log  /var/log/nginx/access.log;

    sendfile        on;
    #tcp_nopush     on;

    #keepalive_timeout  0;
    keepalive_timeout  65;
    tcp_nodelay        on;

    gzip  on;
    gzip_disable "MSIE [1-6]\.(?!.*SV1)";

    include /etc/nginx/conf.d/*.conf;
    include /etc/nginx/sites-enabled/*;

   server {

        listen       81;

        location / {
         proxy_pass  http://94.143.9.34:9500;
         proxy_set_header   Host             $host:81;
         proxy_set_header   X-Real-IP        $remote_addr;
         proxy_set_header   X-Forwarded-For  $proxy_add_x_forwarded_for;
         proxy_set_header Via    "nginx";
        }


    }
}

 mail {
      See sample authentication script at:
      http://wiki.nginx.org/NginxImapAuthenticateWithApachePhpScript

      auth_http localhost/auth.php;
      pop3_capabilities "TOP" "USER";
      imap_capabilities "IMAP4rev1" "UIDPLUS";

     server {
         listen     localhost:110;
         protocol   pop3;
         proxy      on;
     }

     server {
         listen     localhost:143;
         protocol   imap;
         proxy      on;
     }
 }

기본적으로 서버 부분을 추가하는 것 외에는 아무것도 변경하지 않았습니다.


같은 메시지 가 있습니까 ? 포트가 다른 포트로 변경되었을 수 있습니까? sudo를 통해 nginx를 실행하려고 했습니까?
dmr

CentOS는 경우,이 링크의 힘 도움말 serverfault.com/questions/566317/...
vintuwei

이 참조 할 수 있습니다 Nginx에 80 이외의 사용 포트
Shomaail

이 참조 할 수 있습니다 Nginx에 80 이외의 사용 포트
Shomaail

답변:


182

로 이동해야하며 /etc/nginx/sites-enabled/이것이 기본 구성 인 경우 이름별로 파일이 있어야합니다 default.

원하는 포트를 정의하여 해당 파일을 편집하십시오. 아래 스 니펫에서 포트 81의 Nginx 인스턴스를 제공합니다.

server {
    listen 81;
}

서버를 시작하려면 아래 명령 줄을 실행하십시오.

sudo service nginx start

이제 포트 81 (localhost, http : // localhost : 81 )에서 애플리케이션에 액세스 할 수 있습니다 .


또는 서비스를 설치하지 않은 경우 (일반적으로 OS X) 다음을 실행할 수 있습니다. sudo nginx -s reload
John Paul Barbagallo

nginx가 이미 실행중인 경우 다시 시작해야 할 수 있습니다.sudo service nginx restart
depicus

3
81 포트에서 "이 웹 페이지를 사용할 수 없습니다. ERR_CONNECTION_TIMED_OUT"인 경우 크롬에서 오류가 발생하지만 80에서는 제대로 작동합니다.
다리우스. V September

나는 이것을했지만 실행 할 때 netstat여전히 포트 80에서 듣는 것이 있습니다. 아이디어가 있습니까?
Mustafa Chelik

/etc/nginx/sites-available directory
Amit Teli

22

Apache 또는 Nginx의 구성 포트를 변경해야합니다. 이 작업을 수행 한 후에는 사용한 'service'명령을 사용하여 재구성 된 서버를 다시 시작해야합니다.


아파치

편집하다

sudo subl /etc/apache2/ports.conf 

다음 줄의 80을 다른 것으로 변경하십시오.

Listen 80

여기에서 포트를 변경하거나 포트를 더 추가하는 경우 VirtualHost 문을 변경해야 할 수도 있습니다.

sudo subl /etc/apache2/sites-enabled/000-default.conf

다음 줄의 80을 다른 것으로 변경하십시오.

<VirtualHost *:80>

다음으로 다시 시작하십시오.

sudo service apache2 restart

니 진스

편집하다

/etc/nginx/sites-enabled/default

다음 줄에서 80을 변경하십시오.

listen 80;

다음으로 다시 시작하십시오.

sudo service nginx restart

20

다음을 수행하십시오 : 구성 파일을여십시오.

vi /etc/nginx/conf.d/default.conf

듣고있는 포트 번호를 변경하십시오.

listen       81;
server_name  localhost;

iptables에 규칙 추가

 vi /etc/sysconfig/iptables 
-A INPUT -m state --state NEW -m tcp -p tcp --dport 81 -j ACCEPT

IPtables 재시작

 service iptables restart;

nginx 서버를 다시 시작하십시오

service nginx restart

포트 81에서 yr nginx 서버 파일에 액세스


1
내 문제는 당신과 거의 비슷한이 방법을 사용하여 해결되었습니다.
sinshiva

참고 : Windows에서 nginx의 올바른 파일 이름은 conf \ nginx.conf입니다.
Johnny Bigoode

전체 conf 디렉토리가 소스이므로 conf 파일의 이름은 중요하지 않습니다.
sinshiva

3

당신이 다음 포트 관련 서버 설정 아래 창에있는 경우 파일에 존재 nginx.conf 에서 / conf의 <nginx를 설치 경로> 폴더에 있습니다.

server {
    listen       80;
    server_name  localhost;
....

포트 번호를 변경하고 인스턴스를 다시 시작하십시오.


1

Docker를 사용할 때이 문제가 발생하면 올바른 포트 번호를 맵핑하십시오. docker를 실행할 때 (또는 docker-compose.yml을 통해) 포트 81:80을 매핑하는 경우 docker가 이미 매핑을 수행하므로 nginx가 포트 80이 아닌 포트 80에서 수신 대기해야합니다 .

나는이 문제에 대해 꽤 많은 시간을 보냈으므로 향후 Google 직원에게 도움이되기를 바랍니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.