最近看了反向代理和正向代理的东西,想到自己的node.js服务器是运行在3333端口的,也没有为他设置反向代理,node.js项目的一些静态文件是完全可以部署在Nginx上,以减少对node.js的请求。

着手开始做:

1、Nginx依赖gcc,pcre,zlib,openssl之类的库,通过rpm -qa | grep gcc查询,没有的话都安装上。

2、Nginx安装

 准备工作

 a) 创建用户nginx使用的www用户。
    # groupadd  www  #添加www组    
    # useradd -g  www www -s /bin/false  #创建nginx运行账户www并加入到www组,不允许www用户直接登录系统
    创建安装目录与日志目录
    b) 安装目录
    # mkdir /usr/local/nginx
    c) 日志目录
    # mkdir /data0/logs/nginx
    # chown www:www /data0/logs/nginx -R

 安装Nginx

 下载包:wget http://nginx.org/download/nginx-1.4.2.tar.gz

 解压后进入目录

 配置编译然后安装:

 # ./configure --user=www --group=www --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module --with-http_realip_module

 # make

 # make install

 查看lib文件是否都链接好了

 # ldd $(which /usr/local/nginx/sbin/nginx)

 如果有not found,像libpcre.so.1 => not found,则需要手动链接一下,当时我的服务器就出现了这个问题

 # ln -s /usr/local/lib/libpcre.so.1 /lib64/

 检查是否安装成功

 # cd /usr/local/nginx/sbin
 # ./nginx -t

 显示下面内容表示成功了:

 nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
    nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful

打开浏览器输入服务器ip发现已经进入欢迎界面,表示成功。

3、配置node.js反向代理

 编辑配置文件,增加以下配置内容,修改配置文件后要重启Nginx:nginx -s reload

upstream nodejs__upstream {
server 127.0.0.1:3000;
keepalive 64;
}
server {
listen 80;
server_name jianqunzhang.com www.jianqunzhang.com; #charset koi8-r; #access_log logs/host.access.log main; location / {
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
proxy_set_header X-NginX-Proxy true;
proxy_set_header Connection "";
proxy_http_version 1.1;
proxy_pass http://nodejs__upstream;
}

打开浏览器访问,发现直接访问服务器80端口,已经能访问原3333端口的内容了。查看响应头发现服务器已经是nginx了

3333端口响应头

  1. Connection:
    keep-alive
  2. Content-Length:
    1474
  3. Content-Type:
    text/html; charset=utf-8
  4. Date:
    Sat, 22 Jul 2017 09:07:24 GMT
  5. ETag:
    W/"5**********************Mrw"
  6. X-Powered-By:
    Express

80端口响应头

  1. Connection:
    keep-alive
  2. Content-Length:
    1474
  3. Content-Type:
    text/html; charset=utf-8
  4. Date:
    Sat, 22 Jul 2017 09:06:07 GMT
  5. ETag:
    W/"5c*********************UMrw"
  6. Server:
    nginx/1.9.10
  7. X-Powered-By:
    Express

nginx默认配置是

location / {
  root html;
  index index.html index.htm;
}

表示对该服务器80端口的请求直接对应 html目录下的内容

如果想过滤静态资源直接由Nginx服务,可以直接添加下面的配置:

location /file {
  root html;
  index index.html index.htm;
}

注意:要在html目录下创建对应的file文件夹,这样才能找到对应的资源,否则报404错误。

安装Nginx并为node.js设置反向代理的更多相关文章

  1. Centos 7 上使用nginx为Node.js配置反向代理时错误:(13: Permission denied) while connecting to upstream

    错误来源:Centos 7 上使用nginx为Node.js配置反向代理时产生(13: Permission denied) while connecting to upstream的错误 nginx ...

  2. 使用node.js实现反向代理

    一. 反向代理的应用场景 1. 静态资源与动态资源分离 e.g. 图片服务器 2. AJAX跨域访问 3. 搭建统一服务网关接口 二. 使用node.js实现反向代理 1. 安装http-proxy模 ...

  3. 基于Debian系统配置Nginx环境的Node.js应用教程

    Node.js,是当前比较流行的能够动态的快速响应内容的JavaScript框架,在有些环境下比我们使用的PHP应用都能够提高效率.目 前,Node.js可以与我们常用的Nginx.Apache等服务 ...

  4. 怎样在Ubuntu上安装最新版本号的Node.js

    怎样在Ubuntu上安装最新版本号的Node.js 作者:chszs,转载需注明.博客主页:http://blog.csdn.net/chszs Node.js是一个软件平台,通经常使用于构建大规模的 ...

  5. Nginx_地址重写(rewrite)_日志管理(log_format)_压缩输出_Nginx设定限速_Nginx设置反向代理及反向代理缓存

    Nginx地址重写 Nginx rewrite rewrite语法规则1).变量名可以使用 "=" 或 "!=" 运算符~ 区分大小写~* 不区分大小写^~ 禁 ...

  6. Tomcat安装部署和安全加固优化以及反向代理应用

    1.Tomcat介绍 Tomcat是Apache软件基金会(Apache Software Foundation)的Jakarta 项目中的一个核心项目,由Apache.Sun和其他一些公司及个人共同 ...

  7. SVN 通过IIS设置反向代理访问

    原因 一个字,穷,没办法,只有一台机器 要当测试服务器还要做源码管理. 解决办法 通过IIS配置反向代理访问SVN,给SVN访问的HTTPS绑定上域名,就可以正常访问了. 1.修改SVN配置 把SVN ...

  8. Vue-CLI 3.x 设置反向代理

    最近在项目中使用了Vue CLI 3.0版本,项目中需要设置反向代理解决跨域问题,下面记录一下设置过程. 新建配置文件 (vue-cli3.x 官网的配置文档 https://cli.vuejs.or ...

  9. nginx设置反向代理后,页面上的js css文件无法加载

    问题现象: nginx配置反向代理后,网页可以正常访问,但是页面上的js css文件无法加载,页面样式乱了. (1)nginx配置如下: (2)域名访问:js css文件无法加载: (3)IP访问:j ...

随机推荐

  1. 使用JConsole监控HBase内存状态

    使用JConsole或者VisualVM等工具监控HBase状态时,需要修改HBase的配置文件,以解决随机端口问题. 文件名:hbase-env.sh export HBASE_JMX_BASE=& ...

  2. windown 安装配置 mvn不是内部或外部命令

    path 检查没有任何问题,就直接把maven路径直接放到path前面 如果提示JAVA_HOME not found 之类错误,环境变量中需要设置JAVA_HOME,而且需要在path中添加%JAV ...

  3. Number.isInteger在IE中报错的解决方法

    if (!Number.isInteger) { Number.isInteger = function(num) { return typeof num == "number" ...

  4. Django(3)

    https://www.cnblogs.com/yuanchenqi/articles/7429279.html

  5. 关于EmitMapper,映射配置

    public static T Snapshoot<T>(this XtraForm form, T obj) { var config = new DefaultMapConfig(); ...

  6. struct的使用

    编写一个学生struct,成员有学号(id).姓名(name).成绩(5门课程),随机生成多个学生的学号.姓名和成绩存储到结构体数组.再根据总分进行排名并输出学生的信息和总分. stu.h #ifnd ...

  7. #ing#我的日常知识管理160421

    1. 知识来源:浏览是无时无刻的,知识爆炸的时代,信息在互联网上不再难以获得,却变得难以选择,取得有效的信息成了如今获取知识的重要环节…… 前端关注—— alloyteam.github.io  腾讯 ...

  8. HDU6029 Graph Theory 2017-05-07 19:04 40人阅读 评论(0) 收藏

    Graph Theory                                                                 Time Limit: 2000/1000 M ...

  9. C语言 fread()与fwrite()函数说明与示例

    1.作用 读写文件数据块. 2.函数原型 (1)size_t fread ( void * ptr, size_t size, size_t count, FILE * stream ); 其中,pt ...

  10. PHP 7 安装 Memcache 和 Memcached 总结

    Memcache 与 Memcached 的区别 Memcached 是 Memcache 的升级版,优化了 Memcache,并增加了一些操作方法.所以现在基本都是用最近版本的. PHP 7 下安装 ...