Nginx安装与配置

一、简介

Nginx是一个高性能的HTTP和反向代理web服务器,同时也提供了IMAP/POP3/SMTP服务。

Nginx是一款轻量级的Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,在BSD-like 协议下发行。其特点是占有内存少,并发能力强,事实上nginx的并发能力在同类型的网页服务器中表现较好。

二、安装

安装命令
yum -y install nginx

启动命令
/usr/sbin/nginx -c /etc/nginx/nginx.conf

主要配置文件
/etc/nginx/nginx.conf
/etc/nginx/conf.d/default.conf
在nginx.cong中  include /etc/nginx/conf.d/*.conf; 表示默认加载 conf.d下所有配置文件

三、功能与配置

3.1、正向代理

客户端 <一> 代理 一>服务端
正向代理服务器位于客户端和服务器之间,为了从服务器获取数据,客户端要向代理服务器发送一个请求,并指定目标服务器,代理服务器将目标服务器返回的数据转交给客户端。
这里客户端需要要进行一些正向代理的设置的。

正向代理中被代理的是客户端的请求

在这里插入图片描述

3.2、反向代理

客户端 一>代理 <一> 服务端
反向代理,客户端对代理是无感知的,客户端不需要任何配置就可以访问,客户端将请求发送到反向代理服务器,由反向代理服务器去选择目标服务器获取数据后,再返回给客户端,此时反向代理服务器和目标服务器对外就是一个服务器,暴露的是代理服务器地址,隐藏了真实服务器IP地址。

反向代理为常用配置,至于访问哪一个服务器,交给代理服务器处理

在这里插入图片描述

3.3、负责均衡

分为:内置策略、扩展策略。
内置策略:ip_hash、轮询、加权轮询。
扩展策略:自定义。

3.4、ip_hash

ip_hash:通过固定IP请求分配到固定IP服务器
在这里插入图片描述
nginx配置:

upstream web_serverr {
   ip_hash;
   server localhost:8080 weight=1 max_conns=10000 max_fails=3 fail_timeout=15;
   server localhost:8081 weight=1 max_conns=10000 max_fails=3 fail_timeout=15;
   server localhost:8082 weight=1 max_conns=10000 max_fails=3 fail_timeout=15;
}
server {
    listen      8888;
    server_name  127.0.0.1;

    location /web-api{
        access_log /etc/nginx/logs/https_web_api.log;
        proxy_pass             http://web_server/web-api;
        proxy_set_header   Host             $host;
        proxy_set_header   X-Real-IP        $remote_addr;
        proxy_set_header   X-Forwarded-For  $proxy_add_x_forwarded_for;
    }

    location  /web-h5/ {
        add_header Access-Control-Allow-Origin *;
        alias   /web/h5/;
    }
    
       
}

3.5、轮询

在这里插入图片描述
nginx配置:

upstream web_serverr {
   server localhost:8080 weight=1 max_conns=10000 max_fails=3 fail_timeout=15;
   server localhost:8081 weight=1 max_conns=10000 max_fails=3 fail_timeout=15;
   server localhost:8082 weight=1 max_conns=10000 max_fails=3 fail_timeout=15;
}
server {
    listen      8888;
    server_name  127.0.0.1;

    location /web-api{
        access_log /etc/nginx/logs/https_web_api.log;
        proxy_pass             http://web_server/web-api;
        proxy_set_header   Host             $host;
        proxy_set_header   X-Real-IP        $remote_addr;
        proxy_set_header   X-Forwarded-For  $proxy_add_x_forwarded_for;
    }

    location  /web-h5/ {
        add_header Access-Control-Allow-Origin *;
        alias   /web/h5/;
    }
    
       
}

3.6、加权轮询

在这里插入图片描述
nginx配置:

upstream web_serverr {
   server localhost:8080 weight=2 max_conns=10000 max_fails=3 fail_timeout=15;
   server localhost:8081 weight=3 max_conns=10000 max_fails=3 fail_timeout=15;
   server localhost:8082 weight=5 max_conns=10000 max_fails=3 fail_timeout=15;
}
server {
    listen      8888;
    server_name  127.0.0.1;

    location /web-api{
        access_log /etc/nginx/logs/https_web_api.log;
        proxy_pass             http://web_server/web-api;
        proxy_set_header   Host             $host;
        proxy_set_header   X-Real-IP        $remote_addr;
        proxy_set_header   X-Forwarded-For  $proxy_add_x_forwarded_for;
    }

    location  /web-h5/ {
        add_header Access-Control-Allow-Origin *;
        alias   /web/h5/;
    }
    
       
}

四、nginx安全相关配置

4.1、http中的配置

server_tokens off;
    server_names_hash_bucket_size 128;
    client_header_buffer_size 32k;
    large_client_header_buffers 4 64k;

    client_max_body_size 50m;

    sendfile on;
    tcp_nopush  on;
    tcp_nodelay on;

    keepalive_timeout 80;

    fastcgi_connect_timeout 300;
    fastcgi_send_timeout 300;
    fastcgi_read_timeout 300;
    fastcgi_buffer_size 64k;
    fastcgi_buffers 4 64k;
    fastcgi_busy_buffers_size 128k;
    fastcgi_temp_file_write_size 256k;
    proxy_buffer_size 64k;
    proxy_buffers   4 32k;
    proxy_busy_buffers_size 64k;

    gzip on;
    gzip_min_length  1k;
    gzip_buffers     4 16k;
    gzip_http_version 1.0;
    gzip_comp_level 2;
    gzip_types       text/plain application/x-javascript text/css application/xml;
    gzip_vary on;

    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';

    access_log  /var/log/nginx/access.log  main;

4.2、X-XSS-Protection配置

add_header X-XSS-Protection 1;

4.3、静态资源安全配置

Access-Control-Allow-Origin配置为固定IP

location  /web-pc/ {
    #add_header Access-Control-Allow-Origin *;
	add_header Access-Control-Allow-Origin http://192.169.80.1;
	add_header X-XSS-Protection 1;
	add_header Access-Control-Allow-Methods 'GET, POST, OPTIONS';
	add_header Access-Control-Allow-Headers 'DNT,X-Mx-ReqToken,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Authorization';
    if ($request_method = 'OPTIONS') {
       	return 204;
   	}
   	add_header X-Frame-Options SAMEORIGIN;
   	add_header Content-Security-Policy "worker-src 'self'";
   	add_header X-Content-Type-Options nosniff;
   	alias   /web/h5/;
}

4.4、静态文件下载配置

location  /web-download/ {
	valid_referers 192.168.80.1 192.168.80.2;
	if ($invalid_referer) {
		return 403;
	}
	if ($request_uri ~* ^.*\/(.*)\.(xls|xlsx|java|txt|doc|pdf|rar|gz|zip|docx|exe|xlsx|ppt|pptx|jpg|png)(\?attname=([^&]+))$) {
		add_header Content-Disposition "attachment;filename=$arg_attname";
	}
	add_header Access-Control-Allow-Origin *;
	alias   /web/download/;
}

五、常用命令

启动命令
/usr/sbin/nginx -c /etc/nginx/nginx.conf

重新加载配置文件
nginx -s reload

强制停止服务
nginx -s stop

安全退出服务
nginx -s quit

相关链接:
Nginx配置白名单访问:https://blog.csdn.net/qq_38254635/article/details/131771630
参考链接:
https://www.cnblogs.com/Lxxv5/p/16529477.html#DHrQB2bW
https://www.fke6.com/html/93207.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

message丶小和尚

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值