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


1
Моя проблема была решена с помощью этого метода, который был почти аналогичен вам.
— sinshiva

К вашему сведению: правильное имя файла для nginx под Windows будет conf \ nginx.conf
— Джонни Бигуд

Не имеет значения, как называется файл conf, так как источник всего файла conf.
— sinshiva

3

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

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

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


1

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

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

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.