【发布时间】:2018-03-20 10:19:18
【问题描述】:
我是部署新手,基本上这是我第一次接触它。简述应用结构:
我有三个部分:
-
api.app.dev/- 用 Lumen 编写, -
app.dev/backend/- 基本的 PHP 中间件,用于保存 API 令牌和用户数据, -
app.dev/- 前端(JS)。
我正在使用nginx。
我花了很多时间尝试设置它。问题是在app.dev/ 我有存储PHP 模板的/template 文件夹。
在app.dev/backend/ 我只有一页处理请求
在谈到 API 之前。配置应该是什么样子?
我成功配置了 API。前端现在可以工作,但我无法测试它。
但无法让后端部分正常工作。有当前配置:
app.dev/后端
server {
# Port that the web server will listen on.
listen 80;
# Host that will serve this project.
server_name hr.dev/backend;
# Useful logs for debug.
access_log /var/log/nginx/access-hr-backend.log main;
error_log /var/log/nginx/error-hr-backend.log;
rewrite_log on;
# The location of our projects public directory.
root /var/www/hr_app/git_repository/backend;
index page.php;
location / {
add_header Access-Control-Allow-Origin "http://hr.dev";
add_header Access-Control-Allow-Credentials true;
# URLs to attempt, including pretty ones.
try_files $uri/ /page.php?$query_string;
}
# Remove trailing slash to please routing system.
if (!-d $request_filename) {
rewrite ^/(.+)/$ /$1 permanent;
}
# PHP FPM configuration.
location ~* \.php$ {
add_header Access-Control-Allow-Origin "http://hr.dev";
add_header Access-Control-Allow-Credentials true;
fastcgi_pass unix:/var/run/php/php7.1-fpm.sock;
fastcgi_index page.php;
fastcgi_split_path_info ^(.+\.php)(.*)$;
include /etc/nginx/fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}
# We don't need .ht files with nginx.
location ~ /\.ht {
deny all;
}
location ~ \.css {
add_header Content-Type text/css;
add_header Access-Control-Allow-Origin *;
}
location ~ \.js {
add_header Content-Type application/x-javascript;
add_header Access-Control-Allow-Origin *;
}
# Set header expirations on per-project basis
location ~* \.(?:ico|css|js|jpe?g|JPG|png|svg|woff)$ {
add_header Access-Control-Allow-Origin *;
expires 365d;
}
}
如何访问后端部分?
- 它通过前端访问。 AJAX 请求被发送到下面的 URL。
当我尝试访问时:app.dev/backend/?action=1123 我得到404 page not found。
在 localhost 上,一切都像魅力一样。我用 PHP 内部服务器开发,这是一个很大的错误!
【问题讨论】:
-
“不能让后端部分工作”。究竟是什么不工作?它有什么问题?你没有告诉我们问题是什么。
-
@ADyson 很抱歉信息丢失,但你可以写这个,不投反对票...
-
首先是什么让你确定我投了反对票?可以是任何人。碰巧,这次是我,是的。我可以发表评论,但人们对否决票的反应更加积极......无论如何,一旦有足够的信息,我很乐意撤回它。否决票是因为缺乏明确性,根据 SO,这是一个合理的理由。无论如何......一个单一的 URL 上的 404 并不是足够的证据。对 app.dev/backend 的所有访问都会导致 404 吗?还是只有那个?您是否检查过一切都已正确部署?您的代码在其他环境中是否正常工作?
-
@ADyson :) 我知道,我知道 :) 但请记住,权限也会降级。信息已更新。
-
根据您的问题,您有两个域
api.app.dev和app.dev- 后一个域同时支持/位置和/backend位置。/和/backend位置的所有配置都应出现在 sameserver块中,并带有server_name app.dev;指令。