我的环境:Linux、Maven、AWS EC2、Spring Boot
当我连接到 EC2 的 Elastic IP 时,我可以看到项目的主屏幕。但是,当我尝试连接到购买的 .dev 域时,我得到了403 错误和Apache 测试页面。
我想,也许我没有输入正确的路径。或者,权限设置不正确。
于是我修改了httpd.conf文件,但问题还是没有解决。你能检查一下哪一个是错误的吗?
请检查我的代码
需要执行的文件路径在“/home/ec2-user/project/src/main/WEB-INF/views/home.jsp”。
etc/httpd/conf/httpd-le-ssl.conf
<IfModule mod_ssl.c>
<VirtualHost *:443>
DocumentRoot "/home/ec2-user"
ServerName "test.dev"
ServerAlias "www.test.dev"
Include /etc/letsencrypt/options-ssl-apache.conf
SSLCertificateFile /etc/letsencrypt/live/test.dev/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/test.dev/privkey.pem
</VirtualHost>
</IfModule>
等/httpd/conf/httpd.conf
# set IP addresses
Listen 80
<VirtualHost *:80>
DocumentRoot "/home/ec2-user"
ServerName "test.dev"
ServerAlias "www.test.dev"
RewriteEngine on
RewriteCond %{SERVER_NAME} =www.test.dev [OR]
RewriteCond %{SERVER_NAME} =test.dev
RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [END,NE,R=permanent]
</VirtualHost>
# set Deny entirety <- default
<Directory />
AllowOverride none
Require all denied
</Directory>
# Directory custom setting
DocumentRoot "/home/ec2-user"
<Directory "/home/ec2-user">
AllowOverride None
# Allow open access:
Require all granted
</Directory>
<Directory "/home/ec2-user">
Options Indexes FollowSymLinks
AllowOverride None
Require all granted
</Directory>
# Index position custom setting
<IfModule dir_module>
DirectoryIndex /project/src/main/webapp/WEB-INF/views/home.jsp
</IfModule>
错误日志
[core:error] [pid 7748] (13)Permission denied: [client XXX.XXX.XXX.XXX]
AH00035: access to /project/src/main/webapp/WEB-INF/views/home.jsp denied
(filesystem path '/home/ec2-user/project/src') because search permissions are
missing on a component of the path
ec2-user 的权限 在此处输入图片描述
项目的权限 在此处输入图片描述
答案1
这个问题经过一番努力终于解决了!分享一下我解决的情况!首先,从一开始处理的方向就错了。
在我的情况下这是正确的。输入路径‘home/ec2-用户’进入文档根目录.参见下面的代码。
<VirtualHost *:80>
DocumentRoot "/home/ec2-user"
ServerName "test.dev"
ServerAlias "www.test.dev"
~
</VirtualHost>
httpd 配置到此就完成了。之后,将使用 Nginx 访问 http(80 端口)的所有连接更改为 https(端口 443)。