AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / unix / 问题 / 522981
Accepted
lviggiani
lviggiani
Asked: 2019-06-05 23:19:07 +0800 CST2019-06-05 23:19:07 +0800 CST 2019-06-05 23:19:07 +0800 CST

同一台服务器上的 80 端口上的 Node.js 和 PHP

  • 772

我有一个 node.js 站点在我的 Linux 服务器的 8080 端口上运行。在同一个 sarver 上,我还有一个在 80 端口上运行的 PHP 站点(bugzilla)。所以我当前的配置是:

  • http://example.com:8080(node.js应用程序)
  • http://example.com/bugzilla(bugzilla网站)

我希望两个站点都在端口 80 上运行,如下所示:

  • http://example.com/mynodejs(node.js应用程序)
  • http://example.com/bugzilla(bugzilla网站)

那可能吗?

php webserver
  • 2 2 个回答
  • 781 Views

2 个回答

  • Voted
  1. Best Answer
    Hamid Yousefi
    2019-06-11T20:28:33+08:002019-06-11T20:28:33+08:00

    首先,在您的机器上禁用这两项服务。然后将它们的端口更改为不寻常的东西并重新启动它们,例如:

    • PHP 应用程序6821

    • NodeJS 应用程序6822

    请记得打开它们127.0.0.1!你不应该在你的网络接口上打开它们。


    安装nginx为最常用的Reverse Proxy. 根据您的发行版,您可以使用以下命令之一安装它:

    对于基于 Debian 的发行版:

    $ sudo apt install nginx
    

    对于基于 Arch 的发行版:

    $ sudo pacman -S nginx
    

    完全取决于你的发行版,这个包可以有自己的分层文件。所以我会给你nginx.conf作为主配置文件。只需记住使用您喜欢的任何名称复制原始配置文件,例如 nginx.conf.origin

    $ sudo cp /etc/nginx/nginx.conf /etc/nginx/nginx.conf.origin
    

    现在,打开/etc/nginx/nginx.conf,删除现有配置并将这些配置复制到其中:

    user nginx;
    worker_processes  1;
    
    events {
        worker_connections  1024;
    }
    
    http {
        keepalive_timeout  15;
    
        server {
            listen       80 default_server;
            server_name  example.com; 
    
            location /mynodejs {
                proxy_pass http://127.0.0.1:6822;
            }
    
            location /bugzilla {
                proxy_pass http://127.0.0.1:6821;
            }
        }
    }
    

    注意:请考虑我是用心写这个配置文件的,因此当你想运行 nginx 时,你可能会遇到一个错误。如果是这样,请在这里写评论,所以我会测试它。

    现在,只需重新启动您的 nginx!你会得到你想要的。

    • 2
  2. Mylo Mylo
    2019-06-11T23:47:43+08:002019-06-11T23:47:43+08:00

    php 应用程序可以保留在未修改的位置。

    使用 apache 作为网络服务器时,需要启用代理模块。以 ubuntu 为例

    a2enmod proxy
    a2enmod proxy_http
    

    ProxyPass并使用和行修改您的虚拟主机ProxyPassReverse。

    <VirtualHost *:80>
            ServerName www.example.com
            DocumentRoot "/var/www/www.example.com/htdocs"
            #nodejs app
            ProxyPass /mynodejs http://127.0.0.1:8080/
            ProxyPassReverse /mynodejs http://127.0.0.1:8080/
    <Directory "/var/www/www.example.com/htdocs"> 
            Options -Indexes +FollowSymLinks
            AllowOverride All 
            Order allow,deny 
            Allow from all 
    </Directory>
            ErrorLog "|/usr/bin/cronolog /var/www/www.example.com/logs/%Y-%m-%d/error_log" 
            CustomLog "|/usr/bin/cronolog /var/www/www.example.com/logs/%Y-%m-%d/access_log" combined 
    </VirtualHost>
    

    重启阿帕奇/etc/init.d/apache2 restart。

    • 1

相关问题

  • Nginx 版本不可知的 php-fpm 配置

  • 使用 buildroot 构建的嵌入式 apache Web 服务器中的 PHP

  • centos7 php7.x上的php扩展

  • 如何将客户导入 dolibarr

  • 物理链路 (Phys) 和 HDD 插槽

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    模块 i915 可能缺少固件 /lib/firmware/i915/*

    • 3 个回答
  • Marko Smith

    无法获取 jessie backports 存储库

    • 4 个回答
  • Marko Smith

    如何将 GPG 私钥和公钥导出到文件

    • 4 个回答
  • Marko Smith

    我们如何运行存储在变量中的命令?

    • 5 个回答
  • Marko Smith

    如何配置 systemd-resolved 和 systemd-networkd 以使用本地 DNS 服务器来解析本地域和远程 DNS 服务器来解析远程域?

    • 3 个回答
  • Marko Smith

    dist-upgrade 后 Kali Linux 中的 apt-get update 错误 [重复]

    • 2 个回答
  • Marko Smith

    如何从 systemctl 服务日志中查看最新的 x 行

    • 5 个回答
  • Marko Smith

    Nano - 跳转到文件末尾

    • 8 个回答
  • Marko Smith

    grub 错误:你需要先加载内核

    • 4 个回答
  • Marko Smith

    如何下载软件包而不是使用 apt-get 命令安装它?

    • 7 个回答
  • Martin Hope
    user12345 无法获取 jessie backports 存储库 2019-03-27 04:39:28 +0800 CST
  • Martin Hope
    Carl 为什么大多数 systemd 示例都包含 WantedBy=multi-user.target? 2019-03-15 11:49:25 +0800 CST
  • Martin Hope
    rocky 如何将 GPG 私钥和公钥导出到文件 2018-11-16 05:36:15 +0800 CST
  • Martin Hope
    Evan Carroll systemctl 状态显示:“状态:降级” 2018-06-03 18:48:17 +0800 CST
  • Martin Hope
    Tim 我们如何运行存储在变量中的命令? 2018-05-21 04:46:29 +0800 CST
  • Martin Hope
    Ankur S 为什么 /dev/null 是一个文件?为什么它的功能不作为一个简单的程序来实现? 2018-04-17 07:28:04 +0800 CST
  • Martin Hope
    user3191334 如何从 systemctl 服务日志中查看最新的 x 行 2018-02-07 00:14:16 +0800 CST
  • Martin Hope
    Marko Pacak Nano - 跳转到文件末尾 2018-02-01 01:53:03 +0800 CST
  • Martin Hope
    Kidburla 为什么真假这么大? 2018-01-26 12:14:47 +0800 CST
  • Martin Hope
    Christos Baziotis 在一个巨大的(70GB)、一行、文本文件中替换字符串 2017-12-30 06:58:33 +0800 CST

热门标签

linux bash debian shell-script text-processing ubuntu centos shell awk ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve