所以我的目标是我的域名为example.com
conf,例如.com
<VirtualHost *:80>
ServerName example.com
ServerAlias www.example.com
ServerAdmin webmaster@localhost
DocumentRoot /var/www/public_frontend
<Directory "/var/www/public_frontend">
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
RewriteEngine on
</Directory>
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
RewriteEngine On
RewriteCond %{SERVER_PORT} !443
RewriteRule ^(/(.*))?$ https://%{HTTP_HOST}$1 [R=301,L]
</VirtualHost>
^ 此 conf 用于我的 react 应用程序,其中包含一个 .htaccess 文件:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-l
RewriteRule ^.*$ / [L,QSA]
</IfModule>
我有我的 laravel 后端层,它在我的应用程序中被引用,因为localhost:8000
这里是它的 conf 文件
Listen 8000
<VirtualHost *:8000>
ServerName example.com
ServerAlias localhost
ServerAdmin webmaster@localhost
DocumentRoot /var/www/api/public
<Directory "/var/www/api/public">
Options FollowSymLinks Indexes MultiViews
AllowOverride All
Order allow,deny
Require all granted
RewriteEngine On
</Directory>
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
Laravel API 的 .htaccess
<IfModule mod_rewrite.c>
<IfModule mod_negotiation.c>
Options -MultiViews -Indexes
</IfModule>
RewriteEngine On
# Handle Authorization Header
RewriteCond %{HTTP:Authorization} .
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
# Redirect Trailing Slashes If Not A Folder...
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} (.+)/$
RewriteRule ^ %1 [L,R=301]
# Send Requests To Front Controller...
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [L]
RewriteCond %{HTTP:Authorization} . RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
</IfModule>
Mysql正确安装,Laravel正确安装
我的问题如下:我的反应应用程序请求超时。
Error: timeout of 5000ms exceeded
createError createError.js:16
handleTimeout xhr.js:96
编辑:如果我在本地启动我的开发服务器并尝试我的 APACHE 服务器,它会向我的本地机器上的本地主机发出请求。
如何将 apache2 对 localhost 的请求绑定到实际的 localhost?
netstat 输出
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0 0 0.0.0.0:xxxx 0.0.0.0:* LISTEN
tcp6 0 0 :::443 :::* LISTEN
tcp6 0 0 :::8000 :::* LISTEN
tcp6 0 0 :::33060 :::* LISTEN
tcp6 0 0 :::3306 :::* LISTEN
tcp6 0 0 :::80 :::* LISTEN
附言:我将这个问题留待解决,但我最终使用了 nginx。有人指出,我的情况应该可以使用 mod_proxy 来实现。
答案1
您有一个基于名称的 VirtualHost 配置,即当请求到达端口 8000 时,您提供了一个准备为 laravel.api (ServerName) 或www.laravel.api(服务器别名)。
但是,您的应用程序似乎使用了 http://localhost:8000。我建议您尝试将 localhost 添加为 ServerAlias,并检查它是否有效。
此外,您还包含了一些重写指令,用于“example.com”是 SERVER_NAME 的情况。如果您要通过 laravel.api 或www.laravel.api。
答案2
我最终使用了 Nginx,对于新手来说,它更易于设置服务器。但我真的想学习 Apache,而这是我无法解决的障碍。