Як запустити 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)

Це має сенс, оскільки 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 ще раз, я все одно отримую ту ж помилку, що і раніше. Я справді не можу знайти пов’язану публікацію з цього приводу, чи могли б якісь хороші люди розтрощити трохи світла?

Спасибі заздалегідь :)

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

Я повинен опублікувати весь вміст конфіденційності тут:

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

В основному я нічого не змінив, окрім додавання серверної частини.


У вас є те саме повідомлення. Може бути, порт змінився на інший? Ви намагалися запустити nginx через sudo?
дмр

Для центів це посилання може допомогти serverfault.com/questions/566317/…
vintuwei

Ви можете звернутися до цього, використовуючи порти, крім 80, у
NGINX

Ви можете звернутися до цього, використовуючи інші порти, крім 80, у
NGINX

Відповіді:


182

Ви повинні піти до /etc/nginx/sites-enabled/і якщо це конфігурація за замовчуванням, то повинен бути файл на ім'я: default.

Відредагуйте цей файл, визначивши потрібний порт; у фрагменті нижче ми подаємо екземпляр Nginx на порт 81.

server {
    listen 81;
}

Щоб запустити сервер, запустіть командний рядок нижче;

sudo service nginx start

Тепер ви можете отримати доступ до своєї програми на порт 81 (для localhost, http: // localhost: 81 ).


Крім того, якщо у вас не встановлено службу (як правило, ОС X), ви можете запустити: sudo nginx -s reload
Джон Пол Барбагалло,

Можливо, вам доведеться перезапустити, якщо nginx вже запущенийsudo service nginx restart
depicus

3
Я отримую помилку в chrome при спробі з 81 портом: "Ця веб-сторінка недоступна ERR_CONNECTION_TIMED_OUT", але 80 працює добре.
Дарій.V

Я робив це, але коли я бігаю netstat, все-таки на порту 80 щось слухає.
Мустафа Челік

Також перевірте за замовчуванням у/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

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

Доступ до файлів сервера ygin nginx на порт 81


1
Мою проблему було вирішено за допомогою цього методу, який був майже подібний до вас.
sinshiva

FYI: Правильне ім'я файлу для nginx під windows було б conf \ nginx.conf
Johnny Bigoode

Не має значення, як називається файл conf, оскільки отримується весь конфір.
sinshiva

3

Якщо ви перебуваєте у вікні, то нижче файли сервера, пов’язані з портами, містяться у файлі nginx.conf у папці <nginx шлях установки> / conf .

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

Змініть номер порту та перезапустіть примірник.


1

Якщо ви відчуваєте цю проблему під час використання Docker, обов'язково зіставіть правильні номери портів. Якщо ви підключаєте порт 81:80 під час запуску docker (або через docker-compose.yml), ваш nginx повинен прослуховувати порт 80, а не 81, тому що docker виконує відображення вже.

Я витратив досить багато часу на це питання сам, тому сподіваюся, що це може допомогти майбутнім гуглерам.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.