记第一次Nginx的配置

Nginx

首先了解到Nginx是干什么的?它有哪些作用?比较常用到的基础功能有反向代理、负载均衡、正向代理、http服务器。这次部署用到的就是反向代理。

反向代理就是指在目标服务器和本地客户端之间建立一个中介,每次在本地客户端想要访问目标服务器的时候,nginx则会通过监听到相关的请求,收到请求之后将相应的请求向目标服务器进行请求,将目标服务器发送回来的应答信息返回给本地服务器并且将其显示出来。简单来说就是,外部的服务器是无法通过外部网络来访问的,但是有了代理服务器nginx以后可以通过nginx反向代理到服务器,同时nginx和服务器又是在同一个环境中,其端口号不同。而且nginx可以将服务器的资源保存在本地缓存中,如果再次访问的时候,nginx就不需要再去请求服务器了,直接将之前缓存的资源返回给本地。还有反向负载均衡,即通过将本地的请求分发给多个目标服务器,从而避免造成一个目标服务器的压力过大的情况。

下面这个简单的配置就能够实现nginx的反向代理:

server {
listen 80;
server_name localhost;
client_max_body_size 1024M;
location / {
proxy_pass http://localhost:8080;
proxy_set_header Host $host:$server_port;
}
}

上面指定nginx监听80号端口,并且指定代理的网址。

操作

因为我的操作系统是mac,则首先进到nginx的目录,即/usr/local/nginx/sbin。

  1. 启动

启动以后会发现后台有多个nginx进程(取决于你的nginx配置),其中一种是worker process,另一种是master process,顾名思义,worker process负责的是将处理本地发送的请求的进程,而master process则负责管理worker process。

sudo ./nginx
  1. 检查nginx的配置文件是否正确
sudo ./nginx -t
  1. 重启nginx,这里的重启能够很好的平滑过度,不会存在停止nginx
sudo ./nginx -s reload
  1. 停止

通过查询ps -ef|grep nginx,再使用sudo kill -9 pid 即可。

uWSGI

这个是web框架中的服务器,实现了WSGI,uwsgi,https等协议,它负责了将前端的动态请求(如果是静态请求,比如素材,nginx则从其缓存中返回)进行接收,接着web框架会处理对应的信息,将渲染完后相关的页面提交给uWSIGI服务器,有服务器将信息返回给前端。大概的流程如下图:

它的配置也很简单

[uwsgi]
chmod-socket = 664
uid = www-data
gid = www-data
socket = :8000 这里的端口号要和nginx中配置的不同,否则会造成冲突
chdir = "your project dir"
module = project.wsgi
master = true
processes = 4
vacuum = true

启动uwsgi,如果要停下来,control-c即可。

uwsgi --ini uwsgi_name.ini

坑

在配置完了以后,项目的素材无法显示,看logs信息返回的是

通常情况下,我们在nginx配置user的时候默认是www-data;我们可以通过命令#ps aux | grep "nginx: worker process" | awk '{print $1}'查看woker process的拥有者,判断你的配置是否和命令返回的一致,如果不一致就会发生权限的问题。

接着,如果只是将user改成user yourusername,依然是不正确的,因为根据nginx的官方文档:

Syntax: user user [group];
Default: user nobody nobody;
Defines user and group credentials used by worker processes. If group is omitted, a group whose name equals that of user is used.

因此漏了一个group,我们可以通过命令id -g -n $whoami可以查看group name,在后面加上group name,再重启nginx,一切正常!

user username groupname

记一次Nginx的配置的更多相关文章

  1. 记一次nginx php配置的心路历程

    1.本来搞好了php的配置,想把目录下移一层 从 www.abc.com 变成 www.abc.com/wxapi ,由于我的真实文件目录比路由少了一层public 尝试了很多办法都不行 甚至想到了u ...

  2. 【Asp.net Core】在 Linux 子系统中安装 nginx 并配置反向代理

    上一篇鸟文中,老周已经介绍过在 Ubuntu 子系统中安装 dotnet-sdk 的方法,本文老周给大伙伴们说说安装 nginx 服务,并配置反向代理.同样,老周假设你从来没有用过 Linux,所以老 ...

  3. 如何在Nginx下配置PHP程序环境

    1.nginx与PHP的关系 首先来看nginx与php的关系, FastCGI的关系(而不是像apache那样安装成nginx的模块) FastCGI的意思是, 快速的通用网关接口:CGI Comm ...

  4. 从零开始学 Java - CentOS 下 Nginx + Tomcat 配置负载均衡

    为什么现在有非常多的聪明人都在致力于互联网? 最近在读埃隆·马斯克传记,他说「我认为现在有非常多的聪明人都在致力于互联网」. 仔细一想,好像真的是这样的. 我问了自己一个问题:如果你不敲代码了,你能做 ...

  5. Nginx主配置参数详解,Nginx配置网站

    1.Niginx主配置文件参数详解 a.上面博客说了在Linux中安装nginx.博文地址为:http://www.cnblogs.com/hanyinglong/p/5102141.html b.当 ...

  6. nginx + tomcat配置负载均衡

    目标:Nginx做为HttpServer,连接多个tomcat应用实例,进行负载均衡. 注:本例程以一台机器为例子,即同一台机器上装一个nginx和2个Tomcat且安装了JDK1.7. 1.安装Ng ...

  7. spring4+websocket+nginx详细配置

    实现的版本jdk1.7.0_25, tomcat7.0.47.0, Tengine/2.1.1 (nginx/1.6.2), servlet3.0, spring4.2.2 使用maven导入版本3. ...

  8. Nginx Location配置总结

    Nginx Location配置总结 语法规则: location [=|~|~*|^~] /uri/ { - }= 开头表示精确匹配^~ 开头表示uri以某个常规字符串开头,理解为匹配 url路径即 ...

  9. 理解nginx的配置

    Nginx配置文件主要分成四部分:main(全局设置).server(主机设置).upstream(上游服务器设置,主要为反向代理.负载均衡相关配置)和 location(URL匹配特定位置后的设置) ...

随机推荐

  1. 如何自学成为一个WEB前端

    WEB前端是做什么的? 那些什么高大上的介绍作者就略过了,简单来说就是做网页的,我们上网浏览的网站界面就是WEB前端工程师做的. 在互联网迅速发展的近几年,你上网冲浪的时候是不是感觉WEB网站越来越漂 ...

  2. 关于Java解压文件的一些坑及经验分享(MALFORMED异常)

    文章也已经同步到我的csdn博客: http://blog.csdn.net/u012881584/article/details/72615481 关于Java解压文件的一些坑及经验分享 就在本周, ...

  3. MSSQL-Scripter,一个新的生成T-SQL脚本的SQL Server命令行工具

    这里向大家介绍一个新的生成T-SQL脚本的SQL Server命令行工具:mssql-scripter.它支持在SQL Server.Azure SQL DB以及Azure SQL DW中为数据库生成 ...

  4. Hibernate createQuery调用joincolumn

    1. Beans a. Version Bean package locationService.beans; import java.sql.Timestamp; import java.util. ...

  5. Jmeter3.0新特性

    2016-5-19昨日,Jmeter又更新了新版本. 那么新版本有哪些新特性呢? Changes   This page details the changes made in the current ...

  6. Dubbo工程结构和Maven打包

    Dubbo 工程结构 待续 Dubbo pom版本设置 在升级Dubbo的pom版本时需要对每一个工程中子工程pom,子子工程pom进行修改,这是一个复杂繁琐的工作.为此有人手动一个个修改,好一点的用 ...

  7. app界面设计字体规范

    通过对不同类型的app进行总结,总结出app的字体规范. 一.字体选择 1.IOS:苹果ios 9系统开始,系统最新的默认中文字体是:苹方.英文字体是: San Francisco 2.Android ...

  8. angular实现的按钮提示

    用angularJS简单实现了一个小的按钮提示,html文件中需要引入jquery.js和angular.js css代码: <style type="text/css"&g ...

  9. 从零开始的JS生活(一)——JS简介、变量及基本结构

    本K在经过三个静态站制作的狂风暴雨之后,终于开始了JavaScript的学习.作为一只从来没有正儿八经接受过计算机语言的小白,居然能够跟上浩哥的课程进度,我的内心都被我的才智震惊到了,果然本K是天生丽 ...

  10. TreeSet集合排序方式二:定制排序Comparator

    Comparator有两种实现方式: 1,匿名内部类 2,创建一个类用于实现Comparator,该类创建的对象就是比较器 Person类 public class Person implements ...