Nginx基本用法篇二

一、nginx安装

1. yum 安装

yum install nginx

2.编译安装

    useradd nginx -r -s /sbin/nologin   wget http://nginx.org/download/nginx-1.12.2.tar.gz   tar xf nginx-1.12.2.tar.gz   cd nginx-1.12.2   ./configure –prefix=/usr/local/nginx –conf-path=/etc/nginx/nginx.conf –error-log-path=/var/log/nginx/error.log –http-log-path=/var/log/nginx/access.log \ –pid-path=/var/run/nginx.pid –lock-path=/var/run/nginx.lock –user=nginx –group=nginx –with-http_ssl_module –with-http_v2_module –with-http_dav_module \ –with-http_stub_status_module –with-threads –with-file-aio
    make && make install
二、nginx虚拟主机三种实现方式

虚拟主机的实现方式有三种。

    基于多ip
    基于多端口
    基于多虚拟主机名

1. 安装nginx 

[[email protected] ~]# yum install nginx

 方案1-基于多ip

# 查看ip信息
[[email protected] ~]# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN qlen 1
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
    valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host
    valid_lft forever preferred_lft forever
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 00:0c:29:b3:02:e2 brd ff:ff:ff:ff:ff:ff
    inet 192.168.46.151/24 brd 192.168.46.255 scope global ens33
    valid_lft forever preferred_lft forever
    inet6 fe80::df7e:1d50:d858:d479/64 scope link
    valid_lft forever preferred_lft forever
3: ens37: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 00:0c:29:b3:02:ec brd ff:ff:ff:ff:ff:ff
    inet 172.18.46.151/16 brd 172.18.255.255 scope global ens37
    valid_lft forever preferred_lft forever
    inet6 fe80::f0f5:59a9:d186:e6a7/64 scope link
    valid_lft forever preferred_lft forever

# 构建主页
[[email protected] nginx]# pwd
/usr/share/nginx
[[email protected] nginx]# mkdir multi_ip_1
[[email protected] nginx]# mkdir multi_ip_2
[[email protected] nginx]# echo multi_ip_1 >> multi_ip_1/index.html
[[email protected] nginx]# echo multi_ip_2 >> multi_ip_2/index.html

# 编辑配置文件
[[email protected] ~]# cd /etc/nginx/conf.d/
[[email protected] conf.d]# ls
[[email protected] conf.d]# vim multi_ip.conf
[[email protected] conf.d]# cat multi_ip.conf
server    {
    listen 172.18.46.151:80;
    root   /usr/share/nginx/multi_ip_1;
}
server    {
    listen 192.168.46.151:80;
    root   /usr/share/nginx/multi_ip_2;
}

# 测试下
[[email protected] conf.d]# systemctl restart nginx
[[email protected] conf.d]# curl 172.18.46.151
multi_ip_1
[[email protected] conf.d]# curl 192.168.46.151
multi_ip_2

方案2-基于多port

# 编辑配置文件
[[email protected] conf.d]# cp multi_ip.conf multi_port.conf
[[email protected] conf.d]# vim multi_port.conf
[[email protected] conf.d]# cat multi_port.conf
server    {
    listen 172.18.46.151:81;
    root   /usr/share/nginx/multi_port_1;
}
server    {
    listen 172.18.46.151:82;
    root   /usr/share/nginx/multi_port_2;
}

# 构建主页

[[email protected] conf.d]# cd /usr/share/nginx/
[[email protected] nginx]# ls
html  modules  multi_ip_1  multi_ip_2
[[email protected] nginx]# mkdir multi_port_1
[[email protected] nginx]# mkdir multi_port_2
[[email protected] nginx]# echo "multi_port_1" > multi_port_1/index.html
[[email protected] nginx]# echo "multi_port_2" > multi_port_2/index.html

# 测试下
[[email protected] nginx]# systemctl restart nginx
[[email protected] nginx]# curl 172.18.46.151:81
multi_port_1
[[email protected] nginx]# curl 172.18.46.151:82
multi_port_2

方案3-基于多虚拟主机名

这种方式是用的比较多的。

# 其他影响的配置文件备份下
[[email protected] conf.d]# mv multi_host.conf{,.bak}
[[email protected] conf.d]# mv multi_ip.conf{,.bak}

# 编辑配置文件
[[email protected] conf.d]# cp multi_ip.conf multi_host.conf
[[email protected] conf.d]# vim multi_host.conf
[[email protected] conf.d]# cat multi_host.conf
server    {
    listen 80;
    server_name www.linuxpanda.tech;
    root   /usr/share/nginx/multi_host_1;
}
server    {
    listen 80;
    server_name blog.linuxpanda.tech;
    root   /usr/share/nginx/multi_host_2;
}

# 创建主页
[[email protected] conf.d]# cd /usr/share/nginx/
[[email protected] nginx]# ls
html  modules  multi_ip_1  multi_ip_2  multi_port_1  multi_port_2
[[email protected] nginx]# mkdir multi_host_1
[[email protected] nginx]# mkdir multi_host_2
[[email protected] nginx]# echo "multi_host_1" > multi_host_1/index.html
[[email protected] nginx]# echo "multi_host_2" > multi_host_2/index.html

# 测试
虚拟主机需要配合dns解析使用的, 我这里就简单点使用hosts文件解析了。
[[email protected] conf.d]# cat /etc/hosts
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.46.151 www.linuxpanda.tech blog.linuxpanda.tech

[[email protected] conf.d]# systemctl restart nginx
[[email protected] conf.d]# curl www.linuxpanda.tech
multi_host_1
[[email protected] conf.d]# curl blog.linuxpanda.tech
multi_host_2
三、nginx支持https
1、安装nginx

[[email protected] ~]# yum install nginx

2、 配置

[[email protected] conf.d]# cd /etc/pki/tls/certs/
[[email protected] certs]# ls
ca-bundle.crt  ca-bundle.trust.crt  make-dummy-cert  Makefile  renew-dummy-cert
[[email protected] certs]# make www.crt
umask 77 ; /usr/bin/openssl genrsa -aes128 2048 > www.key
Generating RSA private key, 2048 bit long modulus
...................................+++
..........................+++
e is 65537 (0x10001)
Enter pass phrase:
Verifying - Enter pass phrase:
umask 77 ; /usr/bin/openssl req -utf8 -new -key www.key -x509 -days 365 -out www.crt
Enter pass phrase for www.key:
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter ‘.‘, the field will be left blank.
-----
Country Name (2 letter code) [XX]:cn
State or Province Name (full name) []:henan
Locality Name (eg, city) [Default City]:zhenzhou
Organization Name (eg, company) [Default Company Ltd]:linuxpanda.tech
Organizational Unit Name (eg, section) []:opt
Common Name (eg, your name or your server‘s hostname) []:www.linuxpanda.tech
Email Address []:
[[email protected] certs]# ll
total 20
lrwxrwxrwx. 1 root root   49 Jan 11 01:00 ca-bundle.crt -> /etc/pki/ca-trust/extracted/pem/tls-ca-bundle.pem
lrwxrwxrwx. 1 root root   55 Jan 11 01:00 ca-bundle.trust.crt -> /etc/pki/ca-trust/extracted/openssl/ca-bundle.trust.crt
-rwxr-xr-x. 1 root root  610 Aug  4  2017 make-dummy-cert
-rw-r--r--. 1 root root 2516 Aug  4  2017 Makefile
-rwxr-xr-x. 1 root root  829 Aug  4  2017 renew-dummy-cert
-rw-------  1 root root 1359 Mar 15 18:00 www.crt
-rw-------  1 root root 1766 Mar 15 17:59 www.key
[[email protected] certs]# openssl rsa -in www.key -out www2.key
Enter pass phrase for www.key:
writing RSA key
[[email protected] certs]# ll
total 24
lrwxrwxrwx. 1 root root   49 Jan 11 01:00 ca-bundle.crt -> /etc/pki/ca-trust/extracted/pem/tls-ca-bundle.pem
lrwxrwxrwx. 1 root root   55 Jan 11 01:00 ca-bundle.trust.crt -> /etc/pki/ca-trust/extracted/openssl/ca-bundle.trust.crt
-rwxr-xr-x. 1 root root  610 Aug  4  2017 make-dummy-cert
-rw-r--r--. 1 root root 2516 Aug  4  2017 Makefile
-rwxr-xr-x. 1 root root  829 Aug  4  2017 renew-dummy-cert
-rw-r--r--  1 root root 1675 Mar 15 18:00 www2.key
-rw-------  1 root root 1359 Mar 15 18:00 www.crt
-rw-------  1 root root 1766 Mar 15 17:59 www.key
[[email protected] certs]# mkdir /etc/nginx/conf.d/ssl
[[email protected] certs]# cp www2.key /etc/nginx/conf.d/ssl/www.key
[[email protected] certs]# cp www.crt /etc/nginx/conf.d/ssl/
[[email protected] certs]# cd /etc/nginx/conf.d/
[[email protected] conf.d]# ls
bak  ssl  vhosts.conf
[[email protected] conf.d]# vim vhosts.conf
[[email protected] conf.d]# cat vhosts.conf
server {
    listen 443 ssl;
    server_name www.linuxpanda.tech;
    root /usr/share/nginx/multi_host_1;

    ssl on ;
    ssl_certificate /etc/nginx/conf.d/ssl/www.crt;
    ssl_certificate_key /etc/nginx/conf.d/ssl/www.key;
    ssl_session_cache  shared:sslcache:20m;
    ssl_session_timeout 10m;

}

3、 测试

[[email protected] conf.d]# curl https://www.linuxpanda.tech -k
multi_host_1

四、 nginx常用案例

1、 反向代理http和负载均衡

代理就是中介,那有反向代理就有正向代理,两者的区别是什么嘞?

正向代理隐藏真实客户端,服务端不知道实际发起请求的客户端.,proxy和client同属一个LAN,对server透明;

反向代理隐藏真实服务端,客户端不知道实际提供服务的服务端,proxy和server同属一个LAN,对client透明。

基本配置项 

 (1)proxy_pass

将当前请求反向代理到URL参数指定的服务器上

(2)proxy_method

表示转发时的协议方法名

proxy_method POST;       客户端转发来的GET请求在转发时方法名会改为POST请求

(3)proxy_redirect

当上游服务器返回的响应是重定向或者刷新请求(HTTP响应码是301或者302),可以重设HTTP头部的location或refresh

proxy_redirect    http://location:8000/two/  http://location:8000/noe/

(4)proxy_next_upstream

当上游服务器请求出现错误,继续换一台服务器转发请求。

    error:在与服务器建立连接,向其传递请求或读取响应标头时发生错误;

    timeout:在与服务器建立连接,向其传递请求或读取响应头时发生超时

    invalid_header:服务器返回空响应或无效响应;

    http_500:服务器返回了带有代码500的响应;

    http_502:服务器返回具有代码502的响应;

    HTTP_503:服务器返回具有代码503的响应;

    http_504:服务器返回具有代码504的响应;

    http_403:服务器返回带有代码403的响应;

    http_404:服务器返回具有代码404的响应;

    off:禁用将请求传递到下一个服务器。

示例:

#当其中一台返回错误码404,500...等错误时,可以分配到下一台服务器程序继续处理,提高平台访问成功率,多可运用于前台程序负载,设置proxy_next_upstream

  proxy_next_upstream http_500 | http_502 | http_503 | http_504 |http_404;

#proxy_next_upstream off   关闭向下转发请求

[[email protected] conf.d]# vim vhosts.conf

    upstream backend {
        server 172.18.46.152    weight=5;
        server 172.18.46.153;

    }

    server {
        listen 172.18.46.151:80;
        location / {
            proxy_pass http://backend;
        }
    }

[[email protected] conf.d]# for i in {1..10} ; do curl 172.18.46.151; done;
153
152
152
152
152
152
153
152
152
152

2、 反向代理mysql

stream {
    upstream mysqlsrvs {
    server 192.168.22.2:3306;
    server 192.168.22.3:3306;
    least_conn;
}
    server {
        listen 10.1.0.6:3306;
        proxy_pass mysqlsrvs;
    }
}

3、 动静分离

server {
        listen 80;
        server_name www.linuxpanda.tech.com;
        root /data/web1/;
        location / {
                proxy_pass http://172.18.46.152;
        }
        location ~* \.php$ {
                proxy_pass http://172.18.46.153;
        }
}

4、 防盗链

server {
        server_name www.b.com;
        root /data/web2;
        valid_referers none block server_names *.b.com  b.*  ~\.baidu\.;
        if ($invalid_referer) {
                return 403 http://www.magedu.com/;
        }
}

5、 代理服务器的缓存功能

server {
        listen 80;
        server_name www.linuxpanda.tech;
        root /data/web1/;

        proxy_cache proxycache;
        proxy_cache_key $request_uri;
        proxy_cache_valid 200 302 301 1h;
        proxy_cache_valid any 1m;

        add_header X-Via $server_addr;
        add_header X-Cache $upstream_cache_status;
        add_header X-Accel $server_name;

        location / {
                proxy_pass http://192.168.27.17;
                proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        }

        location ~* \.php$ {
                proxy_pass http://192.168.27.6;
        }
}

原文地址:https://www.cnblogs.com/tanxiaojun/p/12151957.html

时间: 2024-10-20 04:16:19

Nginx基本用法篇二的相关文章

Unity3d 4.0新动画系统Mecanim用法(二)

上一篇,我们初步了解了一下Mecanim的部分很基础的类容,我以一个疑问的形式结尾.这次我来揭晓此问题的答案,其实很简单,上次的警告如下: 4.0新动画系统Mecanim用法(二)"> 警告的大概意思是:用在Animator Controller中的Animation clips需要有在检视面板中被设置了Muscle(肌肉)的这个步骤. 我的英文很烂,但我可以知道这句话的含义,就是我们的用到的这个Animation Clip必须是已经产生了Avatar的模型中的Animation Clip

SQL Server调优系列玩转篇二(如何利用汇聚联合提示(Hint)引导语句运行)

原文:SQL Server调优系列玩转篇二(如何利用汇聚联合提示(Hint)引导语句运行) 前言 上一篇我们分析了查询Hint的用法,作为调优系列的最后一个玩转模块的第一篇.有兴趣的可以点击查看:SQL Server调优系列玩转篇(如何利用查询提示(Hint)引导语句运行) 本篇继续玩转模块的内容,同样,还是希望扎实掌握前面一系列的内容,才进入本模块的内容分析. 闲言少叙,进入本篇的内容. 技术准备 数据库版本为SQL Server2012,利用微软的以前的案例库(Northwind)进行分析,

nginx——内存池篇

nginx--内存池篇 一.内存池概述 内存池是在真正使用内存之前,预先申请分配一定数量的.大小相等(一般情况下)的内存块留作备用.当有新的内存需求时,就从内存池中分出一部分内存块,若内存块不够再继续申请新的内存. 内存池的好处有减少向系统申请和释放内存的时间开销,解决内存频繁分配产生的碎片,提示程序性能,减少程序员在编写代码中对内存的关注等 一些常见的内存池实现方案有STL中的内存分配区,boost中的object_pool,nginx中的ngx_pool_t,google的开源项目TCMal

nginx学习笔记之二:nginx作为web server

一.nginx的配置文件:nginx.conf 1.nginx配置文件的结构: main(全局配置段) events {...} http { ... server { location ... {...} location ... {...} ... } server { ... } } 2.配置参数需要以分号结尾,语法格式: 参数名  值1 [值2 ...]; 3.配置文件中还可使用变量: 模块内置变量 用户自定义变量:set var_name value 4.配置文件检查:nginx -t

【转】java提高篇(二)-----理解java的三大特性之继承

[转]java提高篇(二)-----理解java的三大特性之继承 原文地址:http://www.cnblogs.com/chenssy/p/3354884.html 在<Think in java>中有这样一句话:复用代码是Java众多引人注目的功能之一.但要想成为极具革命性的语言,仅仅能够复制代码并对加以改变是不够的,它还必须能够做更多的事情.在这句话中最引人注目的是"复用代码",尽可能的复用代码使我们程序员一直在追求的,现在我来介绍一种复用代码的方式,也是java三大

awk用法(二)

awk用法(二) 知识点一: 条件操作符,可以进行逻辑判断,举个栗子: #awk -F ':' '$1=="daemon"' 1.txt[daemon的双引号必须要加!] 知识点二: #awk -F ':' '$1=="root" || $6~'/sbin/'' 1.txt 其中,||表示或者,上述命令表达的内容是:打印出第一段是root的,或者第六段包含sbin的行. 知识点三: #awk -F ':' '$1=="root" &&am

JMS基础篇(二)

简介 异构集成是消息发挥作用的一个领域,大型公司内部可能会遇到很多的平台,Java,.net或者公司自己的平台等. 传送消息还应该支持异步机制,以提高系统整体的性能.异步传输一条消息意味着,发送者不必等到接收者接收或者处理消息,可以接着做后续的处理. 应用程序发送消息至另外一个应用程序,需要使用到消息中间件.消息中间件应提供容错,负载均衡,可伸缩的事务性等特性. JMS与JDBC类似,是一种与厂商无关的API.应用程序开发者可以使用同样的API来访问不同的系统. 可以认为JMS是一种标准,各消息

Qt学习总结-ui篇(二)

qccs定义圆角 border-radius:10px; 如果想给特定位置定义圆角,如: 左上角:border-left-top-radius:10px; 右下角色:border-right-bottom-rasius:10px; 半透明效果 只需要在css中使用rgba(100,100,100,40)这种形式来表示颜色即可. 为可执行文件添加图标 1.新建文件:finename.rc 文件名无所谓,只要后缀为rc就可以. 2.编辑新建的文件,输入以下内容: IDI_ICON1 ICON DIS

用lua nginx module搭建一个二维码

用lua nginx module搭建一个二维码(qr code)生成器 作者 vinoca 發布於 2014年10月31日 如果有VPS,或者开源的路由器,安装一个nginx,添加lua-nginx-module,再编译安装qrencode for lua ,用下面的lua代码,访问http://youip/qr?t=hello就可以看到效果啦: local qr = require "qrencode" local args = ngx.req.get_uri_args() ngx