Cách khởi động nginx qua các cổng khác nhau (ngoài 80)


128

Xin chào Tôi là người mới sử dụng nginx, tôi đã cố gắng thiết lập nó trên máy chủ của mình (chạy Ubuntu 4), hiện đã chạy apache.

Vì vậy, sau khi tôi apt-get install, tôi đã cố gắng để bắt đầu nginx. Sau đó, tôi nhận được tin nhắn như thế này:

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)

Điều đó có ý nghĩa khi Apache đang sử dụng cổng 80.

Sau đó, tôi đã cố gắng sửa đổi nginx.conf, tôi tham khảo một số bài viết, vì vậy tôi đã thay đổi nó như vậy:

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

Sau khi lưu cái này và thử khởi động lại nginx, tôi vẫn gặp lỗi tương tự như trước đây. Tôi thực sự không thể tìm thấy một bài viết liên quan về điều này, bất kỳ người tốt có thể làm sáng tỏ một số?

Cảm ơn trước :)

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

Tôi nên đăng tất cả nội dung trong conf ở đây:

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

Về cơ bản, tôi không thay đổi gì ngoài việc thêm phần máy chủ.


Bạn có tin nhắn tương tự . Có thể cảng đã đổi sang nơi khác? Bạn đã thử chạy nginx qua sudo?
DMR

Đối với centos, liên kết này có thể giúp serverfault.com/questions/566317/ trên
vintuwei


Câu trả lời:


182

Bạn phải đi đến /etc/nginx/sites-enabled/và nếu đây là cấu hình mặc định, thì nên có một tệp theo tên : default.

Chỉnh sửa tập tin đó bằng cách xác định cổng mong muốn của bạn; trong đoạn trích dưới đây, chúng tôi đang phục vụ trường hợp Nginx trên cổng 81.

server {
    listen 81;
}

Để khởi động máy chủ, hãy chạy dòng lệnh bên dưới;

sudo service nginx start

Bây giờ bạn có thể truy cập ứng dụng của mình trên cổng 81 (đối với localhost, http: // localhost: 81 ).


Ngoài ra, nếu bạn chưa cài đặt dịch vụ (OS X, thường), bạn có thể chạy: sudo nginx -s reload
John Paul Barbagallo

Bạn có thể cần phải khởi động lại nếu nginx đã chạysudo service nginx restart
depicus

3
Tôi gặp lỗi về chrome khi thử với cổng 81: "Trang web này không khả dụng ERR_CONNMENT_TIMED_OUT" nhưng với 80 hoạt động tốt.
Darius.V

Tôi đã làm điều này nhưng khi tôi chạy netstat, vẫn có một cái gì đó lắng nghe trên cổng 80. Bạn có ý tưởng gì không?
Mustafa Chelik

Đồng thời kiểm tra mặc định trong/etc/nginx/sites-available directory
Amit Teli

22

Bạn sẽ cần thay đổi cổng cấu hình của Apache hoặc Nginx. Sau khi thực hiện việc này, bạn sẽ cần khởi động lại các máy chủ được cấu hình lại, sử dụng lệnh 'dịch vụ' bạn đã sử dụng.


Apache

Biên tập

sudo subl /etc/apache2/ports.conf 

và thay đổi 80 trên dòng sau thành một cái gì đó khác:

Listen 80

Nếu bạn chỉ thay đổi cổng hoặc thêm nhiều cổng ở đây, bạn cũng có thể phải thay đổi câu lệnh Virtualhost trong

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

và thay đổi 80 trên dòng sau thành một cái gì đó khác:

<VirtualHost *:80>

sau đó khởi động lại bằng cách:

sudo service apache2 restart

Nginx

Biên tập

/etc/nginx/sites-enabled/default

và thay đổi 80 trên dòng sau:

listen 80;

sau đó khởi động lại bằng cách:

sudo service nginx restart

20

Thực hiện theo điều này: Mở tệp cấu hình của bạn

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

Thay đổi số cổng mà bạn đang nghe;

listen       81;
server_name  localhost;

Thêm quy tắc cho iptables

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

Khởi động lại IPtables

 service iptables restart;

Khởi động lại máy chủ nginx

service nginx restart

Truy cập tập tin máy chủ của bạn trên cổng 81


1
Vấn đề của tôi đã được giải quyết bằng phương pháp này gần giống với bạn.
sinshiva

FYI: Tên tệp chính xác cho nginx dưới cửa sổ sẽ là conf \ nginx.conf
Johnny Bigoode

Không quan trọng tên của tệp conf là gì vì toàn bộ thư mục conf có nguồn gốc.
sinshiva

3

Nếu bạn đang ở trên windows thì bên dưới các cài đặt máy chủ liên quan đến cổng có trong tệp nginx.conf tại thư mục <nginx> / conf .

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

Thay đổi số cổng và khởi động lại thể hiện.


1

Nếu bạn gặp phải vấn đề này khi sử dụng Docker, hãy chắc chắn ánh xạ số cổng chính xác. Nếu bạn ánh xạ cổng 81:80 khi chạy docker (hoặc thông qua docker-compose.yml), nginx của bạn phải lắng nghe trên cổng 80 chứ không phải vì docker đã ánh xạ.

Bản thân tôi đã dành khá nhiều thời gian cho vấn đề này, vì vậy hy vọng nó có thể giúp ích cho những người làm việc trong tương lai.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.