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

92

Привет, Я новичок в 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;
     }
 }

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

  • 0
    У вас есть такое же сообщение. Может быть порт изменился на другой? Вы пытались запустить nginx через sudo?
  • 0
    Для centos эта ссылка может помочь serverfault.com/questions/566317/…
Теги:
nginx

3 ответа

126

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

Отредактируйте этот файл и поместите его (если вы хотите поставить 81 в качестве своего порта для nginx)

server {         слушайте 81;          }

Запустите сервер

sudo service nginx start

Затем выберите localhost: 81

  • 11
    +1 за упоминание о необходимости фактического запуска сервиса nginx. Не сразу очевидно, что это должно быть сделано.
  • 0
    В качестве альтернативы, если у вас не установлена служба (обычно OS X), вы можете запустить: sudo nginx -s reload
Показать ещё 5 комментариев
14

Вам нужно будет изменить порт конфигурации либо Apache, либо Nginx. После этого вам потребуется перезапустить реконфигурированные серверы, используя используемую команду "service".


Apache

Изменить

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
  • 0
    очень доволен вашими правками. Тпй.
11

Следуйте этому: Откройте файл конфигурации

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

  • 0
    Моя проблема была решена с помощью этого метода, который был почти похож на вас.
  • 0
    stackoverflow.com/users/3710715/shivam Почему бы вам не отметить один из ответов как ответ ;-)
Показать ещё 5 комментариев

Ещё вопросы

Сообщество Overcoder
Наверх
Меню