标签 Nginx 下的文章

OpenResty 是一个强大的 Web 应用服务器,Web 开发人员可以使用 Lua 脚本语言调动 Nginx 支持的各种 C 以及 Lua 模块,更主要的是在性能方面,OpenResty可以 快速构造出足以胜任 10K 以上并发连接响应的超高性能 Web 应用系统。

1.安装依赖包

sudo apt-get install gcc g++ make libpcre3 libpcre3-dev zlib1g-dev openssl libssl-dev

2.下载源码

我们需要分别下载nginx,luajit以及lua-nginx-module

#nginx 1.14.2,LuaJIT 2.0.5,lua-nginx-module 0.10.13
mkdir temp && cd temp/
wget http://nginx.org/download/nginx-1.14.2.tar.gz
wget http://luajit.org/download/LuaJIT-2.0.5.tar.gz
wget https://github.com/openresty/lua-nginx-module/archive/v0.10.13.tar.gz
tar xfvz nginx-1.14.2.tar.gz
tar xfvz LuaJIT-2.0.5.tar.gz
tar xfvz v0.10.13.tar.gz

3.编译Nginx

cd LuaJIT-2.0.5/
make && make install
cd ../nginx-1.14.2/
#指定luajit目录
export LUAJIT_LIB=/usr/local/lib
export LUAJIT_INC=/usr/local/include/luajit-2.0
#新建一个文件夹,这将作为安装目录
mkdir /etc/nginx
#配置模块
./configure --prefix=/etc/nginx --add-module=../lua-nginx-module-0.10.13 --with-debug --with-pcre-jit --with-ipv6 --with-http_ssl_module --with-http_stub_status_module --with-http_realip_module --with-http_auth_request_module --with-http_v2_module --with-http_dav_module --with-http_slice_module --with-threads --with-http_addition_module --with-http_gunzip_module --with-http_gzip_static_module --with-http_sub_module --with-stream=dynamic --with-stream_ssl_module --with-mail=dynamic --with-mail_ssl_module
make -j2 && make install

4.配置使用

打开/etc/nginx/conf/nginx.conf加入:

location /lua {
  default_type 'text/plain';
  content_by_lua 'ngx.say("hello")';
}

然后运行nginx:

/etc/nginx/sbin/nginx

测试!

curl http://localhost/lua
hello

最近Armbian访问巨慢,刚好有闲置的VPS,就干脆反向代理,来加速访问Armbian源。

Step 1 :你得有个Nginx

Apt直接装:

sudo apt-get install nginx

Step 2 :配置Nginx

由于我只做代理镜像源,所以直接删除默认的配置,重新写了一下:

 server {
         listen 80; #监听端口
         listen [::]:80;
         server_name _;

 location / {
         proxy_pass  https://apt.armbian.com; #源地址
         proxy_redirect     off;
         #替换头
         proxy_set_header   Host             $host;
         proxy_set_header   X-Real-IP        $remote_addr;
         proxy_set_header   X-Forwarded-For  $proxy_add_x_forwarded_for;
         proxy_next_upstream error timeout invalid_header http_500 http_502 http_503 http_504;
         proxy_max_temp_file_size 0; #指定当响应内容大于proxy_buffers指定的缓冲区时, 写入硬盘的临时文件的大小
         proxy_connect_timeout      90; #nginx跟后端服务器连接超时时间
         proxy_send_timeout         90; #后端服务器数据回传时间
         proxy_read_timeout         90; #连接成功后,后端服务器响应时间
         proxy_buffer_size          4k; #设置代理服务器保存用户头信息的缓冲区大小
         proxy_buffers              4 32k; #proxy_buffers缓冲区
         proxy_busy_buffers_size    64k; #高负荷下缓冲大小
         proxy_temp_file_write_size 64k; #设定缓存文件夹大小
    }
 }

Step 3 :配置板子源

Armbian的源在/etc/apt/sources.list.d/armbian.list下直接替换就行:

sudo vim /etc/apt/sources.list.d/armbian.list
#分享一下我的反向代理源
deb http://apt.chutian.bid stretch main stretch-utils stretch-desktop
#保存&退出,更新软件源
sudo apt-get update

Nginx做文件服务器时,需要显示目录结构,由于安全性的原因,Nginx默认是不开启的,所以下面来人工打开它。

配置

打开你的站点配置文件加入(一般在/etc/nginx/sites-enabled中):

autoindex on;
autoindex_exact_size off;
autoindex_localtime on;
\autoindex_exact_sizeautoindex_localtime
on显示出文件的确切大小,单位为bytes显示的文件时间为文件的服务器时间
off显示出文件的大概大小,单位为kB或MB或GB显示的文件时间为GMT时间

乱码解决

配置完成后我们打开站点,发现中文显示乱码,在配置文件中加入一行即可:

charset utf-8,gbk;

指定目录显示

很多时候我们只需要某个目录暴露出来,这时我们需要定义一个段,下面以站点目录的video为例:

location /video {
        autoindex on;
        autoindex_exact_size off;
        autoindex_localtime on;
        charset utf-8,gbk;
}

我的服务器是 Debian 8,不同的Linux发行版有一定差异。

1 下面我们来安装Nginx。

1.一条命令解决

root@Server:~# sudo apt-get install nginx -y

2.查看版本

root@Server:~# nginx -v
nginx version: nginx/1.6.2

现在可以访问你的站点了:

231-1.png

2 Nginx安装好后,我们接下来安装PHP。

1.又一条命令解决

root@Server:~# apt-get install php5-fpm -y

至于扩展以后再装

3 Nginx PHP的配置

Nginx需要配置才能支持PHP,我们这里是使用PHP-fpm方式。

对PHP的配置:

1.打开PHP-fpm配置文件
nano /etc/php5/fpm/php.ini
(or vim /etc/php5/fpm/php.ini)
2.找到 ;cgi.fix_pathinfo=1 一行,去掉分号(;),将1改成0,即:
cgi.fix_pathinfo=0
3.保存退出

对Nginx的配置:

1.打开Nginx的配置文件

root@Server:/etc/nginx/sites-enabled# nano /etc/nginx/sites-enabled/default

2.找到如下:

# Add index.php to the list if you are using PHP
index index.html index.htm index.nginx-debian.html index.php;(添加index.php)

#location ~ \.php$ {(删除这行的#号)
#       include snippets/fastcgi-php.conf;(删除这行的#号)
#
#       # With php5-cgi alone:
#       fastcgi_pass 127.0.0.1:9000;
#       # With php5-fpm:
#       fastcgi_pass unix:/var/run/php5-fpm.sock;(删除这行的#号)
#}(删除这行的#号)

3.保存,检查配置:

root@Server:~# nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

4.重启

root@Server:~# nginx -s reload

5.新建一个PHP文件测试:

root@Server:~# nano /var/www/html/info.php
(or vim /var/www/html/info.php)
内容:
    <?php phpinfo()?>

6.访问,测试是否正常显示:

231-3.png

配置完成,可以正常使用PHP了。

本文选取常用的Web Servre做对比,并选择其中一个来作为示例来写后面的建站文章。

目前常用的有LAMP,LNMP,LLMP这三个建站的服务器软件。

L 代表 Linux,如果使用Windows建站可以关文章了
A/N/L 代表 Apache2/Nginx/Lighttpd,Web Servre
M 代表 MySQL,一种数据库(还有比较轻量化的数据库:SQLite,但支持他的应用比较少)
P 代表 PHP,一种脚本语言

Apache2

Apache HTTP Server(简称Apache)是Apache软件基金会的一个开放源码的网页服务器,可以在大多数计算机操作系统中运行,由于其多平台和安全性被广泛使用,是最流行的Web服务器端软件之一。它快速、可靠并且可通过简单的API扩展,将Perl/Python等解释器编译到服务器中。
Apache HTTP服务器是一个模块化的服务器,源于NCSAhttpd服务器,经过多次修改,成为世界使用排名第一的Web服务器软件。
它可以运行在几乎所有广泛使用的计算机平台上。

内存占用较大,不适合小型服务器,在实际使用中会比较卡,再加上MySQL.....;但配置简单,无需配置就能使用PHP,适合于访问量大的大型站点。

Nginx

Nginx (engine x) 是一个高性能的HTTP和反向代理服务器,也是一个IMAP/POP3/SMTP服务器。Nginx是由伊戈尔·赛索耶夫为俄罗斯访问量第二的Rambler.ru站点(俄文:Рамблер)开发的,第一个公开版本0.1.0发布于2004年10月4日。
其将源代码以类BSD许可证的形式发布,因它的稳定性、丰富的功能集、示例配置文件和低系统资源的消耗而闻名。2011年6月1日,nginx 1.0.4发布。
Nginx是一款轻量级的Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,并在一个BSD-like 协议下发行。其特点是占有内存少,并发能力强,事实上nginx的并发能力确实在同类型的网页服务器中表现较好,中国大陆使用nginx网站用户有:百度、京东、新浪、网易、腾讯、淘宝等。

轻量化,内存开销还是比较小的,并发能力强;但配置有点繁琐,懒人还是去用Apache2吧。

Lighttpd

Lighttpd 是一个德国人领导的开源Web服务器软件,其根本的目的是提供一个专门针对高性能网站,安全、快速、兼容性好并且灵活的web server环境。具有非常低的内存开销、cpu占用率低、效能好以及丰富的模块等特点。

目前资料较少,不过还不错,轻量化,内存开销小。

至于安装哪个好呢?

要省内存的话LNMP是最好的选择。
静态的多用LNMP还是不错的。
动态内容多的话,LAMP还是最稳定的。
至于LLMP,自己可以去尝试一下。

这里我们选取Nginx来作为示例来在Linux下来搭建站点。

证书是阿里云的免费单域名证书,采用文件验证方式,用DNS有点麻烦。

161-1.png

1.切换至Nginx目录,打开nginx.conf配置文件

cd /etc/nginx/sites-enabled/
nano default
(or vim default)
如果你改过,不一定是default

161-2.png

2.在http里添加如下的配置

server {
    server_name 你的域名;
    listen 443;
    ssl on;
    ssl_certificate 证书目录;
    ssl_certificate_key 私匙目录;
}
# Ctrl+O保存 Ctrl+X退出

161-3-.png

3.重启,检查是否正常

root@debian:/etc/nginx# nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

root@debian:/etc/nginx# /etc/init.d/nginx restart
[ ok ] Restarting nginx (via systemctl): nginx.service.

161-4.png
161-5.png
161-6.png