4

Установил nginx и php-fpm через Homebrew.

Я отключил нативный Apache 2.4, который поставляется с OSX, запустив:

glfx:~ glfx$ sudo launchctl unload -w /System/Library/LaunchDaemons/org.apache.httpd.plist

Он даже говорит, что больше не работает:

/System/Library/LaunchDaemons/org.apache.httpd.plist: Could not find specified service

Затем я запускаю свой nginx и проверяю, что связано с моим портом 80:

glfx:~ glfx$ lsof -i :80
COMMAND   PID USER   FD   TYPE             DEVICE SIZE/OFF NODE NAME
nginx     266 glfx    9u  IPv4 0x6267c63df8016e53      0t0  TCP *:http (LISTEN)
nginx     267 glfx    9u  IPv4 0x6267c63df8016e53      0t0  TCP *:http (LISTEN)
nginx     268 glfx    9u  IPv4 0x6267c63df8016e53      0t0  TCP *:http (LISTEN)
nginx     269 glfx    9u  IPv4 0x6267c63df8016e53      0t0  TCP *:http (LISTEN)
nginx     270 glfx    9u  IPv4 0x6267c63df8016e53      0t0  TCP *:http (LISTEN)
nginx     271 glfx    9u  IPv4 0x6267c63df8016e53      0t0  TCP *:http (LISTEN)
nginx     272 glfx    9u  IPv4 0x6267c63df8016e53      0t0  TCP *:http (LISTEN)
nginx     273 glfx    9u  IPv4 0x6267c63df8016e53      0t0  TCP *:http (LISTEN)

Мои конфиги nginx:

worker_processes  8;
user glfx staff;

events {
   worker_connections  1024;
}

http {
include       mime.types;
default_type  application/octet-stream;

log_format main '$remote_addr - $remote_user [$time_local] $status '
              '"$request" $body_bytes_sent "$http_referer" '
              '"$http_user_agent" "http_x_forwarded_for"';

access_log  logs/nginx/access.log  main;
error_log   logs/nginx/error.log   debug;

sendfile       on;

tcp_nopush     on;
tcp_nodelay    off;

gzip  on;
gzip_http_version 1.0;
gzip_comp_level 2;
gzip_proxied any;

server_names_hash_bucket_size 128;
server_names_hash_max_size 20000;
proxy_headers_hash_bucket_size 128;
proxy_headers_hash_max_size 20000;

underscores_in_headers on;

include /usr/local/etc/nginx/sites/*;
}

И конфиг сайта:

server {
    listen 80;

    server_name signals.dev;
    root /Users/glfx/Projects/signalsplatform.dev/public_html;

    access_log  /usr/local/var/log/nginx/signals.dev.access.log;
    error_log  /usr/local/var/log/nginx/signals.dev.error.log;

    rewrite ^/app_dev\.php/?(.*)$ /$1 permanent;

    location / {
            index app_dev.php;
            try_files $uri @rewriteapp;
    }

    location @rewriteapp {
            rewrite ^(.*)$ /app_dev.php/$1 last;
    }

    location ~ ^/(app|app_dev|config)\.php(/|$) {
            root /Users/glfx/Projects/signalsplatform.dev/public_html;
            include fastcgi_params;
            fastcgi_param  SCRIPT_FILENAME    $document_root$fastcgi_script_name;
    }

}

Когда я пытаюсь получить доступ к signal.dev в моем браузере - вообще нет соединения с веб-сервером, хотя signal.dev:8080 дает мне Nginx 404, не найденный.

Почему я не могу привязать свой nginx к 80 порту?

2 ответа2

3

Вы должны использовать sudo для привязки любого порта ниже 1024, привилегированных портов. Я постараюсь обобщить все. сначала отключите внутренний apache, добавив отключенный в файл /System/Library/LaunchDaemons/org.apache.httpd.plist

       <key>Disabled</key>
       <true/>

затем скопируйте файл plist nginx в /Library/LaunchDaemons/homebrew.mxcl.nginx.plist

    <key>Label</key>
<string>homebrew.mxcl.nginx</string>
<key>RunAtLoad</key>
<true/>
<key>KeepAlive</key>
<false/>
<key>ProgramArguments</key>
<array>
    <string>/usr/local/opt/nginx/bin/nginx</string>
    <string>-g</string>
    <string>daemon off;</string>
</array>
<key>WorkingDirectory</key>
<string>/usr/local</string>

с этими параметрами. проверьте владение plist-файлом. который должен принадлежать root:wheel

-rw-r - r-- 1 корневое колесо 571 21 декабря 19:39 /Library/LaunchDaemons/homebrew.mxcl.nginx.plist

тогда вы можете запустить nginx с привилегией связать порты 80 и 443.

PS: вы можете использовать lunchy (простое приложение ruby для управления launchctl.), Которое идеально подходит для этой работы. Например: sudo lunchy edit apache, sudo lunchy start nginx и т. д.

Также вы можете увидеть, что не так во время запуска launchctl с помощью команды syslog -w .

1

Если вам нужно запустить nginx или apache на порту 80, установите привилегии root для файла .plist.

(Я запускаю nginx по ланчи)

Например:

sudo chown root ~/Library/LaunchAgents/homebrew.mxcl.nginx.plist
sudo chgrp wheel ~/Library/LaunchAgents/homebrew.mxcl.nginx.plist

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .