別のポート(80以外)経由でnginxを起動する方法


128

こんにちは私はnginxの初心者です。すでにApacheが実行されているサーバー(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)

Apacheがポート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を再起動しようとした後も、以前と同じエラーが発生します。私はこれに関する関連の投稿を本当に見つけることができません。善良な人々がいくつかの光を断片化できますか?

前もって感謝します :)

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

私はここにすべてのコンテンツを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 2012年

CentOSのために、このリンクのかもしれないのヘルプserverfault.com/questions/566317/...
vintuwei


回答:


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
ヨハネ・パウロBarbagallo

nginxがすでに実行されている場合は、再起動する必要があるかもしれませんsudo service nginx restart
depicus

3
81ポートで試行すると、Chromeでエラーが発生します。「このWebページはERR_CONNECTION_TIMED_OUTを使用できません」ですが、80を使用するとうまく機能します。
Darius.V 2015

私はこれを実行しましたが、を実行netstatしても、ポート80で何かがリッスンしています。何かアイデアはありますか?
Mustafa Chelik 2016年

また、デフォルトのチェックイン/etc/nginx/sites-available directory
Amit Teli

22

ApacheまたはNginxの設定ポートを変更する必要があります。これを行った後、使用した「service」コマンドを使用して、再構成したサーバーを再起動する必要があります。


Apache

編集する

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

Nginx

編集する

/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 2015

参考:Windowsでのnginxの正しいファイル名はconf \ nginx.confになります
Johnny Bigoode

conf dir全体が供給されるため、confファイルの名前は何でもかまいません。
sinshiva 2017

3

あなたは、ポート関連のサーバー設定の下のウィンドウの上にある場合は、ファイル内に存在しているnginx.conf/ confに<nginxのインストールパス>フォルダ。

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

ポート番号を変更して、インスタンスを再起動してください。


1

Dockerを使用しているときにこの問題が発生している場合は、必ず正しいポート番号をマップしてください。dockerの実行時に(またはdocker-compose.ymlを介して)ポート81:80をマップする場合、Docker はすでにマッピングを行っているため、nginx 81ではなくポート80でリッスンする必要があります。

私はこの問題にかなりの時間を費やしましたので、将来のグーグルの助けになることを願っています。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.