Bagaimana cara memulai nginx melalui port yang berbeda (selain 80)

128

Hai Saya seorang pemula di nginx, saya mencoba mengaturnya di server saya (menjalankan Ubuntu 4), yang sudah menjalankan apache.

Jadi setelah saya apt-get installmelakukannya, saya mencoba memulai nginx. Maka saya mendapatkan pesan seperti ini:

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)

Itu masuk akal karena Apache menggunakan port 80.

Lalu saya mencoba memodifikasi nginx.conf, saya mereferensikan beberapa artikel, jadi saya mengubahnya seperti:

   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";
        }

Setelah menyimpan ini dan mencoba memulai nginx lagi, saya masih mendapatkan kesalahan yang sama seperti sebelumnya. Saya benar-benar tidak dapat menemukan posting terkait tentang hal ini, dapatkah ada orang baik yang mau menerkam?

Terima kasih sebelumnya :)

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

Saya harus memposting semua konten di conf di sini:

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;
     }
 }

Pada dasarnya, saya tidak mengubah apa pun kecuali menambahkan bagian server.

Zhao Peng
sumber
Apakah Anda memiliki pesan yang sama . Mungkin port telah berubah ke yang lain? Apakah Anda mencoba menjalankan nginx via sudo?
dmr
Untuk centos, tautan ini mungkin membantu serverfault.com/questions/566317/…
vintuwei
Anda dapat merujuk ini Menggunakan port selain dari 80 di NGINX
Shomaail
Anda dapat merujuk ini Menggunakan port selain dari 80 di NGINX
Shomaail

Jawaban:

182

Anda harus pergi ke /etc/nginx/sites-enabled/dan jika ini adalah konfigurasi default, maka harus ada file dengan nama: default.

Edit file itu dengan mendefinisikan port yang Anda inginkan; dalam cuplikan di bawah ini, kami melayani instance Nginx di port 81.

server {
    listen 81;
}

Untuk memulai server, jalankan baris perintah di bawah ini;

sudo service nginx start

Anda sekarang dapat mengakses aplikasi Anda di port 81 (untuk localhost, http: // localhost: 81 ).

Chamith Malinda
sumber
Atau, jika Anda tidak menginstal layanan (OS X, biasanya) Anda dapat menjalankan: sudo nginx -s reload
John Paul Barbagallo
Anda mungkin perlu memulai ulang jika nginx sudah berjalansudo service nginx restart
depicus
3
Saya mendapatkan kesalahan dalam chrome ketika mencoba dengan port 81: "Halaman web ini tidak tersedia ERR_CONNECTION_TIMED_OUT" tetapi dengan 80 berfungsi dengan baik.
Darius.V
Saya melakukan ini tetapi ketika saya menjalankan netstat, masih ada sesuatu yang mendengarkan pada port 80. Apakah Anda punya ide?
Mustafa Chelik
Periksa juga default/etc/nginx/sites-available directory
Amit Teli
22

Anda perlu mengubah port konfigurasi Apache atau Nginx. Setelah Anda melakukan ini, Anda perlu me-restart server yang dikonfigurasi ulang, menggunakan perintah 'layanan' yang Anda gunakan.


Apache

Edit

sudo subl /etc/apache2/ports.conf 

dan ubah 80 pada baris berikut menjadi sesuatu yang berbeda:

Listen 80

Jika Anda hanya mengubah port atau menambahkan lebih banyak port di sini, Anda kemungkinan juga harus mengubah pernyataan VirtualHost di

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

dan ubah 80 pada baris berikut menjadi sesuatu yang berbeda:

<VirtualHost *:80>

lalu mulai kembali dengan:

sudo service apache2 restart

Nginx

Edit

/etc/nginx/sites-enabled/default

dan ubah 80 pada baris berikut:

listen 80;

lalu mulai kembali dengan:

sudo service nginx restart
Marco Schoolenberg
sumber
20

Ikuti ini: Buka file konfigurasi Anda

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

Ubah nomor port yang Anda dengarkan;

listen       81;
server_name  localhost;

Tambahkan aturan ke iptables

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

Mulai ulang IPtables

 service iptables restart;

Mulai ulang server nginx

service nginx restart

Akses file server nginx Anda pada port 81

sinshiva
sumber
1
Masalah saya terpecahkan dengan menggunakan metode ini yang hampir mirip dengan Anda.
sinshiva
FYI: Nama file yang benar untuk nginx di bawah windows adalah conf \ nginx.conf
Johnny Bigoode
Tidak masalah apa nama file conf karena seluruh direktori conf bersumber.
sinshiva
3

Jika Anda berada di windows maka di bawah ini pengaturan server terkait port ada di file nginx.conf di <nginx path instalasi> / folder conf .

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

Ubah nomor port dan mulai kembali instance.

skvp
sumber
1

Jika Anda mengalami masalah ini saat menggunakan Docker pastikan untuk memetakan nomor port yang benar. Jika Anda memetakan port 81:80 saat menjalankan docker (atau melalui docker-compose.yml), nginx Anda harus mendengarkan pada port 80 bukan 81, karena docker sudah melakukan pemetaan.

Saya menghabiskan cukup banyak waktu untuk masalah ini sendiri, jadi saya harap ini bisa membantu para googler masa depan.

pencuri
sumber