Nginx在Centos中的使用
安装过程可以见博客:https://blog.csdn.net/qq_34039018/article/details/90373093
这里主要说一下配置过程:
我想要实现的是外网主机访问服务器,然后服务器将访问请求重定向到服务器中的虚拟机里面去。
参考博客:https://www.imooc.com/article/45030
比如说我的服务器公网ip是211.69.197.64,绑定的域名是www.zhangyaya.xyz。而我的项目部署在服务器的ubuntu虚拟机8000端口中,虚拟机的网络地址218.102.199.128,我想通过访问域名访问到虚拟机的218.102.199.128:8000地址。
我在腾讯云上申请了ssl证书,由于用的是Nginx服务器,所以使用针对Nginx的证书。
分别是.crt的公钥和.key的私钥。
通过命令whereis ngnix可以查看Nginx的安装位置,一般是/usr/local/nginx,打开nginx的conf文件夹,里面有nginx.conf配置文件。将.crt的公钥和.key的私钥复制到/conf文件夹下。
配置如下:
user root;
worker_processes 1;
#error_log logs/error.log;
#error_log logs/error.log notice;
#error_log logs/error.log info;
#pid logs/nginx.pid;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
#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 logs/access.log main;
sendfile on;
#tcp_nopush on;
#keepalive_timeout 0;
keepalive_timeout 65;
#gzip on;
server {
listen 80;
server_name www.zhangyaya.xyz;
location /mail/ {
proxy_pass http://218.199.102.128:8000/;
}
location /xxx/ {
proxy_pass http://www.baidu.com/;
}
}
# HTTPS server
#
server {
listen 443 ssl;
server_name www.zhangyaya.xyz;
ssl_certificate 1_www.zhangyaya.xyz_bundle.crt;
ssl_certificate_key 2_www.zhangyaya.xyz.key;
ssl_session_cache shared:SSL:1m;
ssl_session_timeout 5m;
ssl_ciphers HIGH:!aNULL:!MD5;
ssl_prefer_server_ciphers on;
location /mails/ {
proxy_pass http://218.199.102.128:8000/;
}
location /xxxs/ {
proxy_pass https://www.baidu.com/;
}
}
}
解释:
说明下,上图应该是proxy_pass https://www.baidu.com/; 我图片中少了//,记得补上。
测试修改是否有语法错误:
#检测
sudo /usr/local/nginx/sbin/nginx -t
#停止
sudo /usr/local/nginx/sbin/nginx -s stop
#重新启动
sudo /usr/local/nginx/sbin/nginx -s reload
#启动
sudo /usr/local/nginx/sbin/nginx
效果测试:
https测试:
1. 测试mails:https://www.zhangyaya.xyz/mails/
由下图访问可以看到,https没有报证书无效或者不安全等错误,说明https配置正确。
2. 测试:https://www.zhangyaya.xyz/xxxs/
这个好像不知道什么原因,没能重定向成功,可能是百度不支持重定向啥的,具体原因不清楚,没深究。
2.http测试
2.1.mail测试 : https://www.zhangyaya.xyz/mail/
完成访问
2.2. xxx测试: https://www.zhangyaya.xyz/xxx/
直接跳转到百度
3.问题说明
3.1 方法配置conf文件确没有起效?
答:可能使配置错了地方,nginx.conf文件一般位于/usr/local/nginx/conf目录下,检查自己是否配置对了文件。
也可能是后台运行了好几个nginx,一般正常运行后,只有两个进程,用sudo lsof -i:80查看,把多余的杀掉,或者全部杀掉,再重新启动,如下图:
3.2 图片未重定向?
这里这是举了一个很简单的样例,便于理解。如果要重定向图片,需要使用通配符,这个资料很多,不再赘述。另外,证书去网上申请,都是免费的,大概10分钟就好了,我这个是在腾讯云申请的,不要用自己生成的,这样在谷歌浏览器访问的时候会显示证书不完全/无效,或者连接不安全等问题。