Как запустить nginx через другой порт (кроме 80)

128

Привет, я новичок в nginx, я попытался настроить его на своем сервере (под управлением Ubuntu 4), на котором уже запущен apache.

После 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;
     }
 }

В принципе, я ничего не менял, кроме добавления серверной части.

Чжао Пэн
источник
У вас такое же сообщение? Может порт поменяли на другой? Вы пробовали запустить nginx через sudo?
dmr
Для centos эта ссылка может помочь serverfault.com/questions/566317/…
vintuwei 06
Вы можете обратиться к этому Использование портов, отличных от 80 в NGINX
Shomaail,
Вы можете обратиться к этому Использование портов, отличных от 80 в NGINX
Shomaail

Ответы:

182

Вы должны пойти к /etc/nginx/sites-enabled/и если это конфигурация по умолчанию, то должен быть файл по имени: default.

Отредактируйте этот файл, указав желаемый порт; в приведенном ниже фрагменте мы обслуживаем экземпляр Nginx через порт 81.

server {
    listen 81;
}

Чтобы запустить сервер, запустите командную строку ниже;

sudo service nginx start

Теперь вы можете получить доступ к своему приложению через порт 81 (для localhost http: // localhost: 81 ).

Шамит Малинда
источник
В качестве альтернативы, если у вас не установлена ​​служба (обычно OS X), вы можете запустить: sudo nginx -s reload
Джон Пол Барбагалло,
Возможно, вам потребуется перезагрузка, если nginx уже запущенsudo service nginx restart
Deicus
3
Я получаю ошибку в Chrome при попытке с портом 81: «Эта веб-страница недоступна ERR_CONNECTION_TIMED_OUT», но с 80 работает хорошо.
Darius.V
Я сделал это, но когда я бегу netstat, все еще что-то слушает на 80-м порту. У вас есть идеи?
Мустафа Челик
Также проверьте дефолт/etc/nginx/sites-available directory
Амит Тели
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

Доступ к файлам сервера yr nginx через порт 81

sinshiva
источник
1
Моя проблема была решена с помощью этого метода, который был почти аналогичен вам.
sinshiva
К вашему сведению: правильное имя файла для nginx под Windows будет conf \ nginx.conf
Джонни Бигуд
Не имеет значения, как называется файл conf, так как источник всего файла conf.
sinshiva
3

Если вы работаете в Windows, то настройки сервера, связанные с портом, находятся в файле nginx.conf в папке <путь установки nginx> / conf .

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

Измените номер порта и перезапустите экземпляр.

skvp
источник
1

Если у вас возникла эта проблема при использовании Docker, обязательно сопоставьте правильные номера портов. Если вы сопоставляете порт 81:80 при запуске docker (или через docker-compose.yml), ваш nginx должен прослушивать порт 80, а не 81, потому что докер уже выполняет сопоставление.

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

thephper
источник