我已经在 aws ec2 实例上部署了 hunchentoot 服务器,一切运行良好,但我的图像仅在本地呈现,即本地主机,但是当在 ec2 实例上启动并运行时,我收到与图像相关的 404 错误。
我的图像所在的目录
server.lisp
和目录static/
位于同一目录中。
在
server.lisp
我有这个代码:
(define-easy-handler (lisp-handler :uri "/lispy") ()
(setf (hunchentoot:content-type*) "image/png")
(setf (header-out "Access-Control-Allow-Methods") "GET, OPTIONS")
(setf (header-out "Access-Control-Allow-Headers") "Content-Type")
(setf (header-out "Access-Control-Allow-Origin") "http://myhomepage.info, http://localhost:4243")
(handle-static-file "static/lisp.png"))
(define-easy-handler (sicp-handler :uri "/wizard") ()
(setf (hunchentoot:content-type*) "image/jpg")
(setf (header-out "Access-Control-Allow-Methods") "GET, OPTIONS")
(setf (header-out "Access-Control-Allow-Headers") "Content-Type")
(setf (header-out "Access-Control-Allow-Origin") "http://myhomepage.info, http://localhost:4243")
(handle-static-file "static/sicp.jpg"))
(hunchentoot:define-easy-handler (index :uri "/") ()
(setf (hunchentoot:content-type*) "text/html")
(format nil
"<!doctype html>
<html>
<head>
<meta charset=\"UTF-8\">
<title>Jobs Compilers</title>
</head>
<body>
<h3> ..</h3>
<p><img src=\"http://myhomepage.info/wizard\" alt=\"wiz\" width=\"300\" height=\"300\" align=\"left\">....<img src=\"http://myhomepage.info/lispy\" alt=\"lispy\" width=\"300\" height=\"300\" align=\"right\">
<hr />
</body>
</html>"))
(defvar *server*
(make-instance 'hunchentoot:easy-acceptor
:port 4243
:document-root #p"static"))
我不太清楚为什么会发生这种情况。正如我所说,它可以在 localhost:4243 上运行,但是当我部署它时它不起作用。
我已经检查了 ec2 实例上静态目录的权限,一切看起来都很好。所以我不确定。
有人指点一下吗?
默认监听
:address
是"127.0.0.1"
,您可能需要提供与可从外部访问的网络接口关联的地址。一般来说,人们也使用 nginx
作为网关,在这种情况下,您只能在本地网络上提供网页,而 nginx
会将请求传递到您的服务器。