.htaccess 在 Ubuntu 16.04 中使用 Apache Web Server 和 Node.js 应用程



我正在尝试通过使用Apache HTTP Server和.htaccess为Nodejs/Express API服务器和Web应用程序服务器设置受密码保护的暂存环境。

但是,下面的配置不起作用,我可以通过 curl 和浏览器(端口 80)访问 Nodejs 服务器,没有任何限制或密码提示。

我的 Nodejs 应用程序位于/var/www/html/nodejs/app.js上,并通过端口8080上的pm2运行。

我已将我的.htaccess文件放在/var/www/html/.htaccess中,它具有以下内容:

RewriteEngine on
AuthUserFile /home/user/safedirectory/.htpasswd
AuthGroupFile /dev/null
AuthName "Please Enter Password"
AuthType Basic
Require valid-user

我的 Apache 配置位于/etc/apache2/sites-available/000-default.conf,包含以下内容:

<VirtualHost *:80>
ServerAdmin webmaster@localhost
DocumentRoot /var/www/html
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
ProxyRequests Off
ProxyPreserveHost On
ProxyVia Full
<Proxy *>
Require all granted
</Proxy>
<Location />
ProxyPass http://127.0.0.1:8080/
ProxyPassReverse http://127.0.0.1:8080/
</Location>
<Directory /var/www/html>
Options Indexes FollowSymLinks MultiViews
AllowOverride all
Order allow,deny
allow from all
</Directory>

</VirtualHost>

我已经运行了命令

sudo a2ensite 000-default.conf

sudo a2enmod rewrite

但无济于事。

仅供参考,我使用以下网站作为资源:

  • 如何使用 .htaccess 文件

  • 在 Ubuntu 16.04 上使用 Apache 的网站设置 Node.js 应用程序

  • 如何在 Ubuntu 16.04 上使用 Apache 的 mod_rewrite 重写 URL

  • 如何在 Ubuntu 16.04 上使用 Apache 作为反向代理与 mod_proxy

  • 如何在 Ubuntu 16.04 上安装 Apache Web 服务器

任何帮助将不胜感激。谢谢。

如果您有权访问 Apache 配置文件,请不要使用.htaccess。您可以在此处找到解释。

在您的情况下,.htaccess甚至不应用,因为请求永远不会到达文件夹,它们会立即被代理。

试试这个:

<VirtualHost *:80>
ServerAdmin webmaster@localhost
DocumentRoot /var/www/html
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
ProxyRequests Off
ProxyPreserveHost On
ProxyVia Full
<Location />
AuthUserFile /home/user/safedirectory/.htpasswd
AuthGroupFile /dev/null
AuthName "Please Enter Password"
AuthType Basic
Require valid-user
ProxyPass http://127.0.0.1:8080/
ProxyPassReverse http://127.0.0.1:8080/
</Location>
</VirtualHost>

最新更新