• nginx反向代理、域名绑定、ssl证书配置记录


    为了实现谷歌镜像站。

    但是不好用,我的账户硬盘登不上,视频网站打不开。。。能搜索

    域名购买:

    国内要备案的,又要身份证什么的,还要审核。

    便宜的域名一般到二手拍卖看看呢?

    https://www.22.cn/

    但是不太好的地方就是要审核,可以买到3块钱大半年,但是就是一个随机数的域名了都。(点击一口价,然后排名,购买之后要过户,要建立模板,又要审核等等,点击拍卖那就是很慢了,要等到拍卖结束日期)

    国外就不要,所需要的就是一个邮箱。然后交钱就行。自己可以注册一个域名,自己也有几块钱一年的,看美元价格了。

    https://sg.godaddy.com/zh

    如果说是商用,那就不要考虑钱的事了吧,注册com域名即可,如果是国内的话,备案要搞定。

    域名和IP绑定:

    购买以后管理DNS,进去以后

     找一下A记录做一下,名称为@表示当前的根域名,不是@那就顺延二级域名。值为IP地址,或者定向到的位置。值为@表示当前的根域名。

    TTL为存活时间(可能是域名刷新时间吧我觉得),简单配置就是第一行就可以。

    CNAME用来配一个内部的重定向吧可能,这里把www.xxx.xxx解析到xxx.xxx呢我觉得。

    找找看帮助,都是中文呢。https://sg.godaddy.com/zh/help/cname-19236

    测试:

    怎样让它早点生效呢?或者10分钟以后看看自己配置的对不对。

    我是把TTL做成10分钟,然后手动把本地DNS改成了他们的DNS服务器。应该是我配完,他们的DNS服务器里应该是存有了,

    等十分钟,ping一下域名看看,会不会解析到IP。

    HTTPS的SSL证书:

    现在还有谁在用http呢,可能还在上高中的学生吧。。。用用可以,但是还是把http改成https好点呢。

    我们需要一个SSL证书。这个证书是机构颁发和许可的。如果是腾讯云?也许会送SSL证书呢?我用的是国外免费的证书。

    这个和申请地址有关:https://letsencrypt.org/zh-cn/docs/

    https://certbot.eff.org/ 界面,选择自己的服务器操作系统,服务器用的web服务类型,然后看下面的专用教程。

    中间遇到什么报错,直接百度搜就好了,无非是缺包,软链接没设置之类的(应该,一定会出现这个问题吧),很快就能搞定。

    在certbot生成证书之前呢,要缺包nginx配置是正确和正常的。即:域名和IP已经绑定,能够访问HTTP服务。

    Choose how you'd like to run Certbot这个步骤生成证书的时候,一般是这样的:

    https://sebastianblade.com/certbot-add-new-domain-to-certificate/

    就是说要用一个证书,有限制的使用一个跟域名,好多个二级域名可以共用一个证书。最多支持20个域名?反正是有限制的。

    (建议先摸索一下,老老实实certbot --nginx 能不能成功,看看自动生成了什么代码)

    主要的命令就是:

    certbot certificates
    certbot --cert-name foo.com -d foo.com,bar.com,baz.com

    HTTP转HTTPS配置

    就是修改一个nginx.conf文件就好。给一个有价值配置,

    这个文件直接做了反向代理了,不做反向代理去掉upstream www.google.com

    然后修改location里面的就可以吧

    # For more information on configuration, see:
    #   * Official English Documentation: http://nginx.org/en/docs/
    #   * Official Russian Documentation: http://nginx.org/ru/docs/
    
    user nginx;
    worker_processes auto;
    error_log /var/log/nginx/error.log;
    pid /run/nginx.pid;
    
    # Load dynamic modules. See /usr/share/doc/nginx/README.dynamic.
    include /usr/share/nginx/modules/*.conf;
    
    events {
        worker_connections 1024;
    }
    
    http {
        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;
    
        sendfile            on;
        tcp_nopush          on;
        tcp_nodelay         on;
        keepalive_timeout   65;
        types_hash_max_size 2048;
    
        include             /etc/nginx/mime.types;
        default_type        application/octet-stream;
    
        # Load modular configuration files from the /etc/nginx/conf.d directory.
        # See http://nginx.org/en/docs/ngx_core_module.html#include
        # for more information.
        include /etc/nginx/conf.d/*.conf;
    
        upstream www.google.com {
    	server 172.217.5.68:443 weight=1;
    #use nslookup tools to find more ip address
        }
    
        server {
            listen       80 default_server;
            listen       [::]:80 default_server;
            server_name  DOMAN;
    	rewrite ^(.*) https://$host$1 permanent;
            root         /usr/share/nginx/html;
    
            # Load configuration files for the default server block.
            include /etc/nginx/default.d/*.conf;
    
            location / {
            }
    
            error_page 404 /404.html;
            location = /404.html {
            }
    
            error_page 500 502 503 504 /50x.html;
            location = /50x.html {
            }
        }
    
    
        server {
            listen       443 ssl http2 default_server;
            listen       [::]:443 ssl http2 default_server;
        	server_name DOMAN; # managed by Certbot
            root         /usr/share/nginx/html;
    
    	ssl_certificate /etc/letsencrypt/live/xxxxx/fullchain.pem; # managed by Certbot
    	ssl_certificate_key /etc/letsencrypt/live/xxxxxx/privkey.pem; # managed by Certbot
    	include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
    	ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot
    
    
            # Load configuration files for the default server block.
            include /etc/nginx/default.d/*.conf;
    
    
    	location / {
    	    proxy_redirect off;
    	    proxy_cookie_domain google.com DOMAN; 
    	    proxy_pass https://www.google.com;
    	    proxy_connect_timeout 60s;
    	    proxy_read_timeout 5400s;
    	    proxy_send_timeout 5400s;
    	
    	    proxy_set_header Host "www.google.com";
    	    proxy_set_header User-Agent $http_user_agent;
    	    proxy_set_header Referer https://www.google.com;
    	    proxy_set_header Accept-Encoding "";
    	    proxy_set_header X-Real-IP $remote_addr; 
    	    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 
    	    proxy_set_header X-Forwarded-Proto https;
    	    proxy_set_header Accept-Language "zh-CN";
    	    proxy_set_header Cookie "PREF=ID=047808f19f6de346:U=0f62f33dd8549d11:FF=2:LD=en-US:NW=1:TM=1325338577:LM=1332142444:GM=1:SG=2:S=rE0SyJh2W1IQ-Maw";
    	
    	    subs_filter https://www.google.com.hk HTTPSDOMAN;
    	    subs_filter https://www.google.com HTTPSDOMAN;
    	    #subs_filter_types text/css text/xml text/javascript;
    	
    	    sub_filter_once off; 
    	}
    
            error_page 404 /404.html;
            location = /404.html {
            }
    
            error_page 500 502 503 504 /50x.html;
            location = /50x.html {
            }
    
        }
    
    }  

    nginx配置文件让80端口访问的域名直接转443,实现的http到https,如果说之前ssl配置成功,网址就是可信的网址了。

    然后是这个文件要改掉域名DOMAN,然后是,nginx要手动添加模块安装。

    顺便说一下,这边的免费证书是pem呢,不是crt和key后缀,我不知道这个的区别,反正是能用的。

    nginx安装过程

    交叉编译即可。但是要选择一个正确的版本。(手动编译版本和yum版本要一致,便于后面用systemctl命令)

    首先yum安装一下,看一下nginx -V,是啥版本,用的编译命令是啥。

    然后再从nginx上下载对应的release代码,手动编译源码。手动编译时候,给configure脚本添加--add-module配置,里面加进去要添加编译的模块源码路径。

    需要的模块在下面这里网址上写有了,其它地方也有人写,不说了。

    https://oi.0w0.io/2018/06/27/%E6%90%AD%E5%BB%BA%E8%87%AA%E5%B7%B1%E7%9A%84Google-nginx%E5%8F%8D%E5%90%91%E4%BB%A3%E7%90%86Google/

    手动编译时候:make -j4, make一下看看。最后的执行文件为./objs/nginx,将它覆盖掉原来的ngxin文件即可。(用whereis nginx看看yum安装的nginx文件在哪呢,手动覆盖一下cp一下即可)

    然后systemctl restart nginx看看行不行。最好是nginx -t先检查一下配置什么的。ok了以后再继续。

    反向代理

    和正向代理代理客户端请求,向服务器发送申请不一样,反向代理是客户端向代理服务器发送请求,代理服务器根据自己的设置把信息给客户端,客户端想要的信息由代理服务器配置。

    注意nginx是基本必要手动编译的。因为其中要把代理服务器返回给客户端的数据中的一部分网址替换,以便于能够再次让客户端在代理的域名上访问。

    后记

    应该是一下午就能搞定的事。不熟悉的话,可能要一天。

    其实呢,也许,对生产力提高没什么用呢

    哦,对了,后面要是需要好好用一下nginx,建议配置分开呢,nginx.conf所在路径包括其他配置路径,然后../conf.d/路径下放置各种server.conf文件,然后../default.d/下放置所有文件都要生效的地方。




    Le vent se lève! . . . il faut tenter de vivre!


    Le vent se lève! . . . il faut tenter de vivre!
  • 相关阅读:
    Lakehouse: 统一数据仓库和高级分析的新一代开放平台
    mac进入恢复模式,关闭/启动系统完整性(SIP)
    多个xcode版本并存,切换xcode版本
    pod执行指定缓存目录,多版本pod执行缓存目录被清问题
    java特殊处理String.format中的%,使用%做一次转义
    html div设置占屏幕占比高度(使用vh)
    vue+leaflet 地图相关
    vue 集成天地图
    vue iframe嵌套外部网页
    Fabric.js
  • 原文地址:https://www.cnblogs.com/bai2018/p/14405907.html
Copyright © 2020-2023  润新知