我尝试在CentOS 7中使用Apache部署我的应用程序,但即使应用程序正在运行,域也无法访问它。
当我尝试访问该域时,它显示为Forbidden You don't have permission to access this resource
。
请注意,我可以使用ip:port访问网站。
以下是sites-available
目录中文件名为example.com.conf
的Apache的配置:
<VirtualHost *:80>
ServerName example.com
ProxyRequests On
ProxyPass / http://server-ip:3000
ProxyPassReverse / http://server-ip:3000
</VirtualHost>
我还在httpd.conf
文件中添加了IncludeOptional sites-enabled/*.conf
。
我不习惯CentOS 7,也不习惯Apache,所以我不知道我在这里做错了什么。还要注意的是,该域配置了CloudFlare,我认为该域安装了SSL,正如我在浏览器中看到的那样,它没有说“不安全”。还值得一提的是,服务器主机是带有DirectAdmin的私有云服务器。
===============更新=======================================================================================================================================================================================
这是我尝试后,Alaindeseine建议:
<VirtualHost example.com:80>
RewriteEngine on
RewriteCond %{SERVER_PORT} ^80$
RewriteRule ^.*$ https://%{SERVER_NAME}%{REQUEST_URI} [R=301,L]
</VirtualHost>
<VirtualHost *:443>
Header always set Strict-Transport-Security "max-age=31536000"
ServerName example.com
SetOutputFilter DEFLATE
SetEnvIfNoCase Request_URI "\.(?:gif|jpe?g|png)$"no-gzip
AddOutputFilterByType DEFLATE text/html text/plain text/xml text/css text/javascript application/javascript
ExpiresActive On
ProxyRequests off
RequestHeader add original-protocol-ssl 1
<Proxy *>
Order deny,allow
Allow from all
</Proxy>
<Location />
ProxyPass http://ip:3000/
ProxyPassReverse http://ip:3000/
ProxyPreserveHost On
</Location>
# SSLCertificateFile /etc/letsencrypt/live/xxx.example.com/cert.pem
# SSLCertificateKeyFile /etc/letsencrypt/live/xxx.example.com/privkey.pem
# Include /etc/letsencrypt/options-ssl-apache.conf
# SSLCertificateChainFile /etc/letsencrypt/live/xxx.example.com/chain.pem
</VirtualHost>
1条答案
按热度按时间8ftvxx2r1#
如果您认为需要将IP地址更改为本地主机
下面是一个使用SSL的Apache虚拟主机的完整示例:
您可以自然地删除所有SSL配置。
此外,不要将ProxyRequest设置为On,因为如果开放代理不安全,则可能会造成危险:https://httpd.apache.org/docs/2.4/fr/mod/mod_proxy.html#proxyrequests