我有一台GoDaddy VPS托管服务器。我已经成功地安装了Node/NPM、SSL certs等,但是在使用.htaccess时遇到了一些问题。我可以用.htaccess中的以下代码强制http变成https:
RewriteEngine On
RewriteCond %{HTTPS} !on
RewriteCond %{REQUEST_URI} !^/[0-9]+\..+\.cpaneldcv$
RewriteCond %{REQUEST_URI} !^/\.well-known/pki-validation/[A-F0-9]{32}\.txt(?:\ Comodo\ DCV)?$
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}我还可以通过向.htaccess添加以下内容来避免执行Apache反向代理,从而使服务器/域使用NodeJS而不是Apache:
RewriteEngine on
RewriteRule (.*) http://localhost:3000/$1 [P,L] 我遇到的问题是让两者同时工作。强制SSL并指向服务器的NodeJS。
我不确定.htaccess是否是实现这两个目标的最佳途径。
发布于 2018-08-21 20:19:50
如果可以访问Apache配置文件(detailed explanation here),则根本不应该使用.htaccess。
在http (:80)虚拟主机配置中,您可以设置https强制规则,在https (:443)虚拟主机中,您可以设置反向代理规则。此外,使用ProxyPass指令而不是带有[P]标志的RewriteRule可能会产生一些performance benefit
ProxyPass / http://localhost:3000/
ProxyPassReverse / http://localhost:3000/发布于 2018-08-21 22:16:52
如果您可以访问Apache .conf文件,请尝试使用以下代码创建虚拟主机:
<VirtualHost *:80>
ServerName www.example.com
Redirect permanent / https://www.example.com/
</VirtualHost>
<VirtualHost *:443>
ServerName www.example.com
SSLEngine on
SSLCertificateFile /etc/path/to/fullchain.pem
SSLCertificateKeyFile /etc/path/to/privkey.pem
ProxyRequests off
SSLProxyEngine on
ErrorLog /var/log/nodejs/errorLog443.log
TransferLog /var/log/nodejs/transferLog443.log
<Location />
ProxyPass http://localhost:3000/
Order deny,allow
Deny from all
Allow from all
</Location>
</VirtualHost>然后启用刚刚创建的apache虚拟主机,不要忘记安装所有必需的子模块:
sudo a2enmod ssl
sudo a2enmod proxy
sudo a2enmod proxy_balancer
sudo a2enmod proxy_http
sudo a2ensite example.apache.host.conf
sudo service apache2 restart如果您需要创建一个新的apache .conf文件,请执行以下几个步骤:
/etc/apache2/sites-avaliable,并使用示例代码创建新的虚拟主机配置文件。a2ensite.示例:
cd /etc/apache2/sites-avaliable
vim new-virtual-host.conf将上面描述的示例配置放在此文件的顶部。
创建符号链接:
cd /etc/apache2/sites-enabled/
ln -s ../sites-available/new-virtual-host.conf new-virtual-host.conf或
sudo a2ensite new-virtual-host.conf最后,通过重新启动apache服务来重新加载新配置:
sudo service apache2 restart管理/创建web主机SSL证书的最佳方式是使用Let’s Encrypt服务。Please follow guide here
如果您已经拥有有效的证书,您当然可以按照this gude.将其转换为pem格式。
Centos下的
更新:
对于Centos操作系统,只需在/etc/httpd/conf/httpd.conf位置打开apache2配置文件,向下滚动到文档的最底部,即可找到名为虚拟主机的部分。在那里,您可以编辑/添加具有所需适当配置的虚拟主机部分。
有关如何在Centos上配置Apache服务的更多信息,请阅读指南How To Set Up Apache Virtual Hosts on CentOS 6
https://stackoverflow.com/questions/51941504
复制相似问题