nginx反向代理https网站 并实现网站的注册和登录功能

简介:

nginx反代多数是用sub_filter,但是这个需要ngx_http_sub_module模块,刚好军哥的安装包就自带编译了,所以很方便。
开始工作:
一、给服务器上面安装nginx、php、带上http_sub_module、pcre-devel、openssl模版编译即可。(其他模块常见的就不说了,一键脚本都有,反代用到的也少)
二、配置反向代理规则

一键包安装好之后,已经默认有nginx.conf文件了,所以我们就直接修改nginx.conf就行。

1:先创建缓存文件夹

mkdir /home/cache/path -p

mkdir /home/cache/temp -p

2:修改nginx.conf文件中的http区域,在这里增加反代的缓存设置。还有wordpress正常功能的配置。如果不是wordpress网站可以不要那几句。

http
    {
        include       mime.types;
        default_type  application/octet-stream;
 
        server_names_hash_bucket_size 128;
        client_header_buffer_size 32k;
        large_client_header_buffers 4 32k;
        client_max_body_size 50m;
 
        sendfile   on;
        tcp_nopush on;
 
        keepalive_timeout 60;
 
        tcp_nodelay on;
 
        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;
 
        gzip on;
        gzip_min_length  1k;
        gzip_buffers     4 16k;
        gzip_http_version 1.1;
        gzip_comp_level 2;
        gzip_types     text/plain application/javascript application/x-javascript text/javascript text/css application/xml application/xml+rss;
        gzip_vary on;
        gzip_proxied   expired no-cache no-store private auth;
        gzip_disable   "MSIE [1-6]\.";
 
        #limit_conn_zone $binary_remote_addr zone=perip:10m;
        ##If enable limit_conn_zone,add "limit_conn perip 10;" to server section.
        #从这里开始就是在http区域里面添加的,上面的是默认就有的,可以不动。
        #这一段是为了wordpress的功能
        #map $http_cookie $logged_in {
        #default 0;
        #~SESS 1; # Drupal session cookie
        #~wordpress_logged_in 1; # WordPress session cookie
    #}
        #下面这段就是反代缓存设置了
        server_tokens off;
        access_log off;
        client_body_buffer_size  512k;#缓冲区代理缓冲用户端请求的最大字节数
        proxy_connect_timeout    5;#nginx跟后端服务器连接超时时间(代理连接超时)
        proxy_read_timeout       60;#连接成功后,后端服务器响应时间(代理接收超时)
        proxy_send_timeout       5;#请求的超时时间
        proxy_buffer_size        16k;#设置代理服务器(nginx)保存用户头信息的缓冲区大小
        proxy_buffers            4 64k;#proxy_buffers缓冲区,网页平均在64k以下
        proxy_busy_buffers_size 128k; #高负荷下缓冲大小(proxy_buffers*2)
        proxy_temp_file_write_size 128k;
        proxy_temp_path   /home/cache/temp;
        proxy_cache_path  /home/cache/path levels=1:2 keys_zone=cache_one:100m inactive=3d max_size=5g;
        #这一段就是反代的一些缓存和设置,最后一句cache_one为缓存区名字,100m是内存占用, 3d是3天删除, 5g是缓存空间,
这些时间只是做镜像反代不用设置太长,如果是做集群负载就可以加长相互的连接时间。

3:修改nginx.conf文件中的server区域,在这里增加反代的proxy规则

反代域名的80端口监听设置

server {
    listen 80;
    server_name cs.test.com;#反代域名
    #这里的跳转,如果不是要反代ssl网站就不用了
        if ( $scheme = http ){
        return 301 https://$server_name$request_uri;
    }
 
    #屏蔽蜘蛛,防止降权,反代别人的网站。。。就随便了
    if ($http_user_agent ~* (baiduspider|360spider|haosouspider|googlebot|soso|bing|sogou|yahoo|sohu-search|yodao|YoudaoBot|robozilla|msnbot|MJ12bot|NHN|Twiceler)) {
        return  403;
        }
 
    #反代规则设置
    location / {
    sub_filter www.test.com cs.test.com; #网站域名,反代域名
    sub_filter_once off;#进行替换
    proxy_cache cache_one;
        #缓存区名称
        proxy_cache_valid  200 304 3h;
        #200 304状态缓存3小时
        proxy_cache_valid 301 3d;
        #301状态缓存3天
        proxy_cache_valid any 10s;
        #其他状态缓存(如502 404)10秒
        proxy_cache_key "$scheme://$host$request_uri";
        #缓存key规则,自动清除缓存
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    #向后端传递访客ip
    proxy_set_header Referer http://www.test.com;
        #强制定义Referer
    proxy_set_header Host www.test.com;
    #定义主机
    proxy_pass http://www.test.com;
    #
    proxy_set_header Accept-Encoding "";
    #重要 将信息传递到服务器端
        }
 
}

这个80端口,也可以取消加到下面433一起去。如果不做https的ssl反代就用上面这个就行了。
我看国外的一些网站上,基本都是分别创建server,国内的看见几个都是加在一起的,但是我加在一起的时候,出现过问题,另外为了方便自己,毕竟是80要强制跳转到433的,所以我单独创建了。反代网站最好是用ssl吧,可以防止被判为非法。

server
    {
    listen 443 ssl;
    ssl on;
        ssl_certificate /usr/local/nginx/ssl/cs.test.com.crt;
        ssl_certificate_key /usr/local/nginx/ssl/cs.test.com.key;
        #这里的域名证书是你反代的域名的证书,现在免费证书网上一大堆可以申请的,就不说了
        ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
        ssl_ciphers EECDH+CHACHA20:EECDH+AES128:RSA+AES128:EECDH+AES256:RSA+AES256:EECDH+3DES:RSA+3DES:!MD5;
        ssl_prefer_server_ciphers on;
        ssl_session_timeout 10m;
        ssl_session_cache builtin:1000 shared:SSL:10m;
        ssl_buffer_size 1400;
        add_header Strict-Transport-Security max-age=15768000;
        ssl_stapling on;
        ssl_stapling_verify on;
 
        #跳转https
    if ( $scheme = http ){
        return 301 https://$server_name$request_uri;
        }
        
    #屏蔽蜘蛛,防止降权
    if ($http_user_agent ~* (baiduspider|360spider|haosouspider|googlebot|soso|bing|sogou|yahoo|sohu-search|yodao|YoudaoBot|robozilla|msnbot|MJ12bot|NHN|Twiceler)) {
        return  403;
        }
 
        #反代规则设置
    location / {
    sub_filter www.test.com cs.test.com; #网站域名,反代域名
    sub_filter_once off;
    proxy_cache cache_one;
        #缓存区名称
        proxy_cache_valid  200 304 3h;
        #200 304状态缓存3小时
        proxy_cache_valid 301 3d;
        #301状态缓存3天
        proxy_cache_valid any 10s;
        #其他状态缓存(如502 404)10秒
        proxy_cache_key "$scheme://$host$request_uri";
        #缓存key规则,自动清除缓存
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    #向后端传递访客ip
    proxy_set_header Referer https://www.test.com;
        #强制定义Referer
    proxy_set_header Host www.test.com;
    #定义主机
    proxy_pass_header Set-Cookie;
        #这两句是为了实现wordpress的正常功能
        #proxy_cache_bypass $logged_in;
        #proxy_no_cache $logged_in;
        #这两句是为了实现wordpress的正常功能
    proxy_pass https://www.test.com;
    #这种写法,这里就必须得是https
    proxy_set_header Accept-Encoding "";
    #重要将信息传递到服务器端
    }
}
}

最后看看nginx -t有没有什么语法错误,有就修改,没有就重启nginx,看有没有生效。
我们做这个纯属因为wordpress网站关系,这样做下来,反代的网站,功能上都正常,包括支付功能。
下次做负载均衡了,也会靠这个的大部分配置。

目录
相关文章
|
应用服务中间件 Linux 网络安全
Centos 8.0中Nginx配置文件和https正书添加配置
这是一份Nginx配置文件,包含HTTP与HTTPS服务设置。主要功能如下:1) 将HTTP(80端口)请求重定向至HTTPS(443端口),增强安全性;2) 配置SSL证书,支持TLSv1.1至TLSv1.3协议;3) 使用uWSGI与后端应用通信(如Django);4) 静态文件托管路径设为`/root/code/static/`;5) 定制错误页面(404、50x)。适用于Web应用部署场景。
1081 87
|
安全 应用服务中间件 网络安全
如何测试Nginx反向代理实现SSL加密访问的配置是否正确?
如何测试Nginx反向代理实现SSL加密访问的配置是否正确?
974 60
|
缓存 负载均衡 应用服务中间件
Nginx七层(应用层)反向代理:HTTP反向代理proxy_pass篇
通过使用Nginx的反向代理功能,可以有效地提高Web应用的性能、安全性和可扩展性。配置过程中需要注意不同场景下的具体需求,如负载均衡、SSL终止和缓存策略等。正确配置和优化Nginx反向代理可以显著提升系统的整体表现。
2405 20
|
缓存 Java 应用服务中间件
nginx的正向代理和反向代理以及tomcat
Nginx的正向代理和反向代理功能在不同的场景中具有重要作用,正向代理主要用于客户端访问控制和匿名浏览,而反向代理则用于负载均衡和高可用性服务。Tomcat作为Java Web应用服务器,与Nginx结合使用,可以显著提升Web应用的性能和稳定性。通过合理配置Nginx和Tomcat,可以构建高效、稳定和可扩展的Web服务架构。
609 11
|
应用服务中间件 Linux 网络安全
nginx安装部署ssl证书,同时支持http与https方式访问
为了使HTTP服务支持HTTPS访问,需生成并安装SSL证书,并确保Nginx支持SSL模块。首先,在`/usr/local/nginx`目录下生成RSA密钥、证书申请文件及自签名证书。接着,确认Nginx已安装SSL模块,若未安装则重新编译Nginx加入该模块。最后,编辑`nginx.conf`配置文件,启用并配置HTTPS服务器部分,指定证书路径和监听端口(如20000),保存后重启Nginx完成部署。
5377 8
|
存储 应用服务中间件 nginx
nginx反向代理bucket目录配置
该配置实现通过Nginx代理访问阿里云OSS存储桶中的图片资源。当用户访问代理域名下的图片URL(如 `http://代理域名/123.png`)时,Nginx会将请求转发到指定的OSS存储桶地址,并重写路径为 `/prod/files/2024/12/12/123.png`。
687 5
|
9月前
|
编解码 应用服务中间件 Linux
centos配置nginx-rtmp实现ffmpeg转码rtsp为rtmp视频流
centos配置nginx-rtmp实现ffmpeg转码rtsp为rtmp视频流
710 1
|
负载均衡 应用服务中间件 nginx
Nginx配置与命令
Nginx 是一款高性能的 HTTP 和反向代理服务器,其配置文件灵活且功能强大。本文介绍了 Nginx 配置的基础结构和常用指令,包括全局块、Events 块、HTTP 块及 Server 块的配置方法,以及静态资源服务、反向代理、负载均衡、HTTPS 和 URL 重写等功能实现。此外,还提供了常用的 Nginx 命令操作,如启动、停止、重载配置和日志管理等,帮助用户高效管理和优化服务器性能。
1153 14
|
9月前
|
Ubuntu 安全 应用服务中间件
详细指南:配置Nginx服务器在Ubuntu平台上
以上步骤涵盖了基本流程:从软件包管理器获取 Ngnix, 设置系统服务, 调整UFW规则, 创建并激活服务器块(也称作虚拟主机), 并进行了初步优化与加固措施。这些操作都是建立在命令行界面上,并假设用户具有必要权限(通常是root用户)来执行这些命令。每个操作都有其特定原因:例如,设置开机启动确保了即使重启后也能自动运行 Ngnix;而编辑server block则定义了如何处理进入特定域名请求等等。
508 18
|
9月前
|
Ubuntu 安全 应用服务中间件
详细指南:配置Nginx服务器在Ubuntu平台上
以上步骤涵盖了基本流程:从软件包管理器获取 Ngnix, 设置系统服务, 调整UFW规则, 创建并激活服务器块(也称作虚拟主机), 并进行了初步优化与加固措施。这些操作都是建立在命令行界面上,并假设用户具有必要权限(通常是root用户)来执行这些命令。每个操作都有其特定原因:例如,设置开机启动确保了即使重启后也能自动运行 Ngnix;而编辑server block则定义了如何处理进入特定域名请求等等。
848 17