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!
原文地址:https://www.cnblogs.com/bai2018/p/14405907.html