Как настроить файл с доступными сайтами для конкретного сайта в nginx для приложения Laravel? - PullRequest
0 голосов
/ 23 мая 2018

Я пытаюсь развернуть приложение Laravel 5.4 через Nginx .Итак, я более или менее придерживаюсь этого урока .

Мой сервер - Amazon EC2 под управлением Ubuntu 16.04 с PHP 7.0.Версия Nginx - это 1.10.3.

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

http://ec2-xxx-xxx-xxx-xxx.us-west-2.compute.amazonaws.com/my-site

Однако при попытке сделать это появляется ошибка 403.

Если я пытаюсь получить прямой доступ к общей папке (http://ec2-xxx-xxx-xxx-xxx.us-west-2.compute.amazonaws.com/my-site/public), я получаю домашнюю страницу своего приложения, но ссылки не работают.Так как я получил ошибку Laravel, когда сделал ошибку, похоже, она работает.

Порт 80 открыт ( этот ответ ), и если я просто создаю папку внутри /var/www/html и положить index.php файл, я могу получить к нему доступ через браузер.При попытке доступа к http://ec2-xxx-xxx-xxx-xxx.us-west-2.compute.amazonaws.com отображается страница Welcome to nginx по умолчанию, поэтому nginx работает.

Artisan (php artisan serve), похоже, работает в терминале, но когда я пытаюсь получить к нему доступ через браузер (http://ec2-xxx-xxx-xxx-xxx.us-west-2.compute.amazonaws.com:8000), соединение отклонено (и я тоже открыл порт 8000).

Попытка прямого доступа через ip () приводит к одинаковому поведению для каждого URL (xxx.xxx.xxx.xxx показывает приветствие nginx, xxx.xxx.xxx.xxx/my-site возвращает ошибку 403 и т. Д.)

Я думаю Моя проблема связана с файлами sites-available .Я не уверен, как правильно назвать файл для моего конкретного приложения , и я чувствую, что это проблема - поэтому nginx не может определить файл и применить конфигурации на сайте:

Без комментариев вот мой /etc/nginx/sites-available/default файл:

server {
    listen 80 default_server;
    listen [::]:80 default_server;

    root /var/www/html;

    index index.php index.html index.htm index.nginx-debian.html;

    server_name xxx.xxx.xxx.xxx;

    location / {
        try_files $uri $uri/ =404;
    }

    location ~ \.php$ {
        include snippets/fastcgi-php.conf;
        fastcgi_pass unix:/run/php/php7.0-fpm.sock;
    }

    location ~ /\.ht {
        deny all;
    }
}

А вот содержимое /etc/nginx/sites-available/my-site файла:

server {
    listen 80;
    listen [::]:80;

    root /var/www/html/my-site/public;

    # Add index.php to the list if you are using PHP
    index index.php index.html index.htm index.nginx-debian.html;

    server_name xxx.xxx.xxx.xxx/my-site;

    location / {
        try_files $uri $uri/ /index.php?$query_string;
    }

    location ~ \.php$ {
        include snippets/fastcgi-php.conf;
        fastcgi_pass unix:/run/php/php7.0-fpm.sock;
    }

    location ~ /\.ht {
        deny all;
    }
}

А вот мойnginx.conf содержимое файла:

user www-data;
worker_processes auto;
pid /run/nginx.pid;

events {
    worker_connections 768;
    # multi_accept on;
}

http {

    ##
    # Basic Settings
    ##

    sendfile on;
    tcp_nopush on;
    tcp_nodelay on;
    keepalive_timeout 65;
    types_hash_max_size 2048;
    # server_tokens off;

    # server_names_hash_bucket_size 64;
    # server_name_in_redirect off;

    include /etc/nginx/mime.types;
    default_type application/octet-stream;

    ##
    # SSL Settings
    ##

    ssl_protocols TLSv1 TLSv1.1 TLSv1.2; # Dropping SSLv3, ref: POODLE
    ssl_prefer_server_ciphers on;

    ##
    # Logging Settings
    ##

    access_log /var/log/nginx/access.log;
    error_log /var/log/nginx/error.log;

    ##
    # Gzip Settings
    ##

    gzip on;
    gzip_disable "msie6";

    # gzip_vary on;
    # gzip_proxied any;
    # gzip_comp_level 6;
    # gzip_buffers 16 8k;
    # gzip_http_version 1.1;
    # gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript;

    ##
    # Virtual Host Configs
    ##

    include /etc/nginx/conf.d/*.conf;
    include /etc/nginx/sites-enabled/*;
}

Ps: я уже создал символическую ссылку для папки sites-enabled.

Я пытался использовать домен EC2 (ec2-xxx-xxx-xxx-xxx.us-west-2.compute.amazonaws.com в server_name обоих файлов, но при попытке перезапуска nginx выдает ошибку.

Удаление части /my-site файла my-site server_name все еще возвращает ошибку 403 в URL ec2-xxx-xxx-xxx-xxx.us-west-2.compute.amazonaws.com/my-siteОднако, если я удаляю файл приветствия nginx по умолчанию (index.nginx-debian.html), я могу получить доступ к намеченной домашней странице по URL-адресу http://ec2-xxx-xxx-xxx-xxx.us-west-2.compute.amazonaws.com без my-site. Ссылки также работают, однако JSфайлы как внешние, так и внутри одного и того же ip не загружаются из-за «политики безопасности содержимого», иURL-адрес не тот, который я намеревался.

Итак, Что-то не так с этими конфигурациями , в частности с именами серверов и именем файла?

...