安装Nginx并为node.js设置反向代理

摘要:
www用户不允许直接登录系统以创建安装目录和日志目录b)安装目录#mkdir/usr/local/nginx c)日志目录#mkdir/data0/logs/nginx#chownwww:server_namejianqunzhang.comwww.jianquunzhang.com;

最近看了反向代理和正向代理的东西,想到自己的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设置反向代理》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇C# Dictionary.Keys用法及代码示例XXL-Job高可用集群搭建下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

EF结合SqlBulkCopy实现高效的批量数据插入 |EF插件EntityFramework.Extended实现批量更新和删除

原文链接:http://blog.csdn.net/fanbin168/article/details/51485969   批量插入 (17597条数据批量插入耗时1.7秒)   using System;   using System.Collections.Generic;   using System.Linq;   usi...

ngx_lua 随笔

--[[ test--]]ngx.header.content_type = "text/plain"; --输出头部local user = ngx.var.arg_user -- 定义user变量并获取url中的参数 http://localhost?user=hellolocal sys = ngx.var.server_name -- 获取ngi...

mariadb5.5.56二进制离线安装

在生产环境中一般使用发布好的二进制版本,简单概括一下安装过程:   1. 下载 地址为:https://downloads.mariadb.org/mariadb/5.5.56/   这里选择最新版本的5.5.56稳定版,进入后根据计算机位数选择,这里下载适用于64位操作系统的Linux x86_64版本   这里下载包含glibc和不包含glibc的都是...

ES入门 (3) 语法(1)DDL(1) 索引操作

1 RESTful   REST 指的是一组架构约束条件和原则。满足这些约束条件和原则的应用程序或设计就是 RESTful。Web 应用程序最重要的 REST 原则是,客户端和服务器之间的交互在请求之间是无状态的。从客户端到服务器的每个请求都必须包含理解请求所必需的信息。如果服务器在请求之间的任何时间点重启,客户端不会得到通知。此外,无状态请求可以由任何可...

python | Jenkins构建Spring Boot 详细步骤

目录 前言 如何安装Jenkins? 环境准备 开始安装Jenkins 初始化配置 访问首页 输入管理员密码 安装插件 创建管理员 实例配置 配置完成 构建Spring Boot 项目 配置JDK、maven、Git环境 安装插件 添加 SSH Server 添加凭据 新建Maven项目 构建任务 如何构建托管在GitLab的项目?...

js中window对象详解以及页面跳转

1.window.top.window.location= "index.asp"; 2.window.top.location.href="index.asp" 3.window.top.location.replace("index.asp"); 4.window.navigate("index.asp"); 5.windows.open()//新窗口...