У меня есть виртуальная машина, на которой работает сервер nginx. Сейчас работает только один экземпляр, и мне нужен второй для моего Laravel API. В качестве операционной системы виртуальная машина использует сервер Ubuntu 16.04.
Теперь я создал второй файл в / etc / nginx / sites-available и связан с сайтами с поддержкой. В хостах я также создал для целей тестирования строку 127.0.0.1 example.com. Если я назову это с помощью curl example.com:8000. Верну ли я сайт в терминал. Поскольку я снова и снова обнаруживаю там свое имя папки, я предполагаю, что все правильно.
Теперь я хотел бы сделать это со стороны. Я хочу иметь доступ к своему Laravel API за пределами виртуальной машины с другим портом.
Я думал, что это сработает, если у меня он будет точно так же, как в файле по умолчанию. Итак, я указал в качестве имени сервера _. Это не было решением.
С 192.168.2.110 я все еще получаю страницу WordPress. Но с 192.168.2.110:8000 ни одной страницы не найдено. Наконец, IP также должен служить только для целей REST в Angular. Но чтобы я знал, работает ли это тоже, я должен увидеть домашнюю страницу Laravel в папке Public.
Я следил за этим руководством: https://www.digitalocean.com/community/tutorials/how-to-set-up-nginx-server-blocks-virtual-hosts-on-ubuntu-16-04
# Default server configuration
#
server {
listen 8000 default_server;
listen [::]:8000 default_server;
# SSL configuration
#
# listen 443 ssl default_server;
# listen [::]:443 ssl default_server;
#
# Note: You should disable gzip for SSL traffic.
# See: https://bugs.debian.org/773332
#
# Read up on ssl_ciphers to ensure a secure configuration.
# See: https://bugs.debian.org/765782
#
# Self signed certs generated by the ssl-cert package
# Don't use them in a production server!
#
# include snippets/snakeoil.conf;
root /var/www/MT_Backend_Iventorysystem/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 _;
include snippets/self-signed.conf;
include snippets/ssl-params.conf;
location / {
# First attempt to serve request as file, then
# as directory, then fall back to displaying a 404.
# try_files $uri $uri/ =404;
try_files $uri $uri/ /index.php$is_args$args;
}
# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
#
location ~ \.php$ {
include snippets/fastcgi-php.conf;
#
# # With php7.0-cgi alone:
# fastcgi_pass 127.0.0.1:9000;
# # With php7.0-fpm:
fastcgi_pass unix:/run/php/php7.2-fpm.sock;
}
# deny access to .htaccess files, if Apache's document root
# concurs with nginx's one
#
location ~ /\.ht {
deny all;
}
# Following location added to handle WordPress correctly
location = /favicon.ico { log_not_found off; access_log off; }
location = /robot.txt { log_not_found off; access_log off; allow all; }
location ~* \.(css|gif|ico|jpeg|jpg|js|png)$ {
expires max;
log_not_found off;
}
}






Один из способов:
В приложении / Providers / RouteServiceProvider:
public function map()
{
switch(request()->getPort())
{
case 80:
case 8080:
case 443:
$this->mapWebRoutes();
break;
// choose a port that is not used by another server
case 8975:
$this->mapApiRoutes();
break;
}
}
В ngnix
server {
listen 8975;
server_name YOUR_DOMAIN_NAME;
root '/path/to/your/application/public/;
...