Articles of node.js

nginx反向代理与NodeJS应用程序和redirect

我一直在研究这个问题太久,所以我需要来请求专家的帮助! 我的查询是非常类似于这里问: nginx代理传递redirect忽略端口,但我相信,我的节点应用程序的行为略有不同。 我正在运行Intel AMT NodeJS应用程序meshcommander( http://www.meshcommander.com/meshcommander ),它在端口3000上提供一个web应用程序。该应用程序在服务器192.168.0.27上运行。 我的nginx服务器在端口80上的同一台服务器上运行,这就是我在主服务器块下设置了反向代理的方式: location /intel { satisfy any; allow 192.168.0.0/24; deny all; auth_basic "Restricted Content"; auth_basic_user_file /etc/nginx/.htpasswd; rewrite /intel(/.*) /$1 break; proxy_pass http://192.168.0.27:3000; proxy_set_header X-Real-IP $remote_addr; proxy_set_header Host $http_host; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } 我遇到的第一个问题是,当你直接在端口3000上打开节点应用程序时,像这样: http://192.168.0.27:3000 它会redirect到另一个页面: http://192.168.0.27:3000/default.htm 不幸的是,当你转到:nginx反向代理不会自动发生这种情况: http://192.168.0.27/intel 但没有问题,这只是为了调用这个方法: htt://192.168.0.27/intel/default.htm 这很好,但是在使用web应用程序时,最终需要调用局域网上的另一台服务器,以及发生故障的地方。 我可以看到节点应用程序中的某些操作调用页面,如: http://192.168.0.27/intel/webrelay.ashx?p=1&host=10.7.7.6&port=16992&tls=0 它返回一个404,我可以看到这是它被发送的方式: Request URL:http://192.168.0.27/intel/webrelay.ashx?p=1&host=10.7.7.6&port=16992&tls=0 Request method:GET […]

暴发户重复的过程,一个与“sudo”和一个没有

我已经build立了两个节点应用程序来使用Upstart持久运行。 问题是这些进程得到了重复,有一个会话负责人(Ss)和一个multithreading进程(Sl): root 843 0.0 0.0 64176 2048 ? Ss Oct30 0:00 sudo /opt/bitnami/nodejs/bin/node app.js root 853 0.0 0.1 64176 2052 ? Ss Oct30 0:00 sudo /opt/bitnami/nodejs/bin/node app.js root 908 0.0 3.3 1236852 68712 ? Sl Oct30 0:14 /opt/bitnami/nodejs/bin/.node.bin app.js root 909 0.0 3.0 1259052 62756 ? Sl Oct30 0:20 /opt/bitnami/nodejs/bin/.node.bin app.js 关于这个问题已经有另外一个问题了:( Upstart:为什么两个进程作为一个不同的用户运行? ),但是在这个.conf文件的进程已经被configuration为不是从“root”用户运行,而是从“部署”一个,另一方面在我的新贵档案中,configuration如下: […]

如何configuration.htaccess以节点作为CGI运行JavaScript

我在我的linux本地主机上testing这个。 这就是我想要的: balter@spectre:/var/www/html$ cat .htaccess Action cgi-node "/usr/bin/env node" AddHandler cgi-node .js balter@spectre:/var/www/html$ ls -al hello.js -rwxr-xr-x 1 balter balter 99 Oct 31 13:17 hello.js balter@spectre:/var/www/html$ cat hello.js #!/usr/bin/env node console.log("Content-Type: text/html"); console.log("hello from javascript"); balter@spectre:/var/www/html$ node hello.js Content-Type: text/html hello from javascript 当我访问localhost/hello.js所有我看到的是hello.js的内容 另外我想知道我是否真的打开了cgi。 我想我做了,因为PHP的工作。 但是我没有启用cgi模块,或者在apache.conf打开。 所以我添加了cgi.load并添加到我的apache.conf ################################################################### ######### Adding capaility to run CGI-scripts […]

Linode服务器上的Nginx + nodejs + socket.io websockets

我正在尝试在Linode服务器上configurationnodejs,socket.io和nginx。 为此,我创build了虚拟主机。 在nginx.conf # Add to nginx.conf http section map $http_upgrade $connection_upgrade { default upgrade; '' close; } 在socket.example.com upstream some_upsteram_com { server 127.0.0.1:8888; keepalive 15; } server { listen 80; root /var/www/node-socket-app; index index.html index.htm; access_log /home/user/logs/socket-access.log; error_log /home/user/logs/socket-error.log; server_name socket.example.com; large_client_header_buffers 8 32k; location / { try_files $uri @nodejs; } # Important! Serve […]

NodeJS Express API被防火墙阻止

我有一个NodeJS Express API ,运行良好,但它被一些基本的防火墙阻挡,比如我学校的guest wifi和一些内部的wifis。 // START THE SERVER // ============================================================================= https.createServer({ key: fs.readFileSync('/etc/letsencrypt/live/api.febc.org/privkey.pem'), cert: fs.readFileSync('/etc/letsencrypt/live/api.febc.org/fullchain.pem') }, app).listen(15443); console.log('Magic happens on port 15443'); SSL证书是让我们encryption,因为我的客户的IT部门认为这是最好的select,因为它是免费的。 我的假设是证书不如付费的CA,比如我个人使用的SSLs.com 。 因为我的个人API在这些wifis上工作。 该url确实得到了绿色locking,但我相信有些事情是错的。 我有: 更改了端口(8443) 双重检查ufw ,并确保我允许所有需要的端口 testing我的手机的热点,它的工作原理 有人可以解释为什么发生这种情况? 免费证书不好吗?

使用回退和SSL进行Webcaching

什么是最好的方法,或者是从xpicaching数据的不同方式,如果api停机,则回退到最后的caching? 我的情况: 我有一个网站(运行Apache),显示下一场足球比赛 我从API(数据提供者)获取数据 我想caching请求,所以我不超过API的限制 如果数据提供者closures,我仍然需要显示上次caching的数据 有没有办法做到这一点? 或者更多什么是最好的方法? 我可以用nodejs服务器来做到这一点吗?

不能curl到NodeJS,但可以从浏览器访问它

我可以从浏览器访问我的testing节点站点( http://18.220.168.1:8888 )就好了。 但是,当我尝试使用PHP的cURLcurl时,我得到: Array ( [curl_error] => Failed to connect to 18.220.168.1 port 8888: Connection refused [error_number] => 7 ) 我的cURL设置是: $ch = curl_init($url); curl_setopt($ch, CURLOPT_CUSTOMREQUEST, $method); curl_setopt($ch, CURLOPT_POSTFIELDS, $data); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true); // Temporary for testing self-signed sites curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); curl_setopt($ch, CURLOPT_HTTPHEADER, array( 'Content-Type: '.$data_type, 'Content-Length: […]

如何连接到一个pod中的non-kubernetes EC2 MongoDB实例?

我有一个在Amazon AWS上运行的Kubernetes集群,这些集群内部都很好,我知道如何让集群内的集群彼此通信。 但是,由于各种原因,我也有一个单独的EC2实例运行MongoDB控制器。 这不是集装箱化的,不受Kubernetes控制。 我的程序(一个节点快车应用程序)位于公共子网上,而数据库位于私有子网上。 数据库是使用标准的AWS MongoDB模板从这里设置的: https : //aws.amazon.com/blogs/aws/mongodb-on-the-aws-cloud-new-quick-start-reference-deployment/在我的代码我试图通过: mongodb://user:[email protected]:27017/users ,并确保在users数据库中存在该users名和密码。 我甚至在MongoDBconfiguration中禁用了对公钥的引用,以防发生这种情况(尽pipe如果我能够基本设置工作,我会看到它们的值)。 我已经调整了数据库实例的安全组,以允许端口27017上的Kubernetes实例(它们都在同一个VPC中)的连接。但是,我没有做任何特别的事情,或者主机或者主机让它看到一个半kubernetes集群之外的本地networkingIP。 我不知道是否甚至需要(我说“半本地”,因为它是一个10.xxx范围的地址,但与主机实例相邻,而不是我认为在Kubernete自己的地址空间内运行的pod)。 基本上,我不能连接到数据库,我不知道为什么(或者我怀疑我知道为什么,但不知道如何解决它)。 我不认为它是一个权限的事情,因为用最大的日志冗长,数据库显示没有连接的企图,甚至被拒绝的(但我仍然对它开放 – 我想它可以被拒绝在一个更高的水平) 。 我怀疑这是一个IP映射问题,但我远不是专家。 有任何想法吗? 谢谢。 PS复制这篇文章,因为我被要求在这里张贴(尽pipe没有实际certificate这是一个基础设施问题): https://stackoverflow.com/questions/47302330/how-do-i-connect-to-a-non-kubernetes-ec2-mongodb-instance-from-a-pod

索引页面HTML加载没有别的

我有一个节点和快递应用程序,只会提供index.html页面。 它确实使用模板,但它会拉入页眉和页脚,但不是样式和JS。 该代码适用于开发服务器(云9),但不适用于数字海洋生产服务器。 我还没有推出我的应用程序,因为我不能在这里得到它所有的function。 当我去除根路线之外的任何事情时,我正在得到404。 我也得到net::ERR_ABORTED在我的控制台中的每一个CSS和JS文件。 我在整个应用程序目录上设置了755权限。 我使用的Web服务器是Nginx,并将其设置为指向端口8080和/var/www/siteName/appName的反向代理。 代码被设置为在/var/www/siteName/appName/server/public查找静态文件,但不会将其拖到其他任何文件中。 我会发布configuration,如果你们想,但不知道要发布什么文件或哪些部分的文件。 只要问,我会把他们。

限制访问运行在Apache代理之后的节点js

我目前有一个使用ProxyPass的Apache设置,可以将HTTP请求转发给某个URL,然后转发到与Apache一起运行的Node.js应用程序。 除了一件事以外,它正在运行:我的Node应用程序是“公共”的,这意味着任何人都可以访问提及的URL并获取Node应用程序正在提供的数据。 有没有反正我可以限制哪些请求实际上是从Apache代理到代理,根据其来源? 理想情况下,如果请求来自访问Apache正在服务的网站的客户端,则允许代理到节点,如果不是,则拒绝它。 (我对这些话题还比较陌生,所以如果我错过了一些明显的东西,请纠正我)