nginx反向代理、域名绑定、ssl证书配置记录
为了实现谷歌镜像站。
但是不好用,我的账户硬盘登不上,视频网站打不开。。。能搜索
域名购买:
国内要备案的,又要身份证什么的,还要审核。
便宜的域名一般到二手拍卖看看呢?
但是不太好的地方就是要审核,可以买到3块钱大半年,但是就是一个随机数的域名了都。(点击一口价,然后排名,购买之后要过户,要建立模板,又要审核等等,点击拍卖那就是很慢了,要等到拍卖结束日期)
国外就不要,所需要的就是一个邮箱。然后交钱就行。自己可以注册一个域名,自己也有几块钱一年的,看美元价格了。
如果说是商用,那就不要考虑钱的事了吧,注册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配置,里面加进去要添加编译的模块源码路径。
需要的模块在下面这里网址上写有了,其它地方也有人写,不说了。
手动编译时候: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!

浙公网安备 33010602011771号