Nginx的使用

Nginx的使用

  • 一、配置前端项目访问
  • 二、配置SSL证书
    • 1、正常配置
    • 2、配置报错
  • 三、配置域名反向代理
    • 1、简单代理
    • 2、带参数代理
    • 3、指定后缀域名跳转
    • 4、访问反向代理域名的静态资源
    • 5、配置静态资源访问
      • (1)、将域名配置到小程序,获得TXT文件(非小程序反向代理可以不看)
      • (2)、配置访问静态资源

一、配置前端项目访问

vue项目打包好后是一个vue文件,如何配置IP访问?

只需要在http模块中增加一个server模块。

左边的是安装好nginx时最初的配置文件,右边增加了注释的是做了修改的地方,其中红框框起来的需要自定义修改。
在这里插入图片描述

这是完整的配置内容:


#user  nobody;
worker_processes  1;#error_log  logs/error.log;
#error_log  logs/error.log  notice;
#error_log  logs/error.log  info;# 每个nginx进程对应一个pid
# 需要打开,不然会报错:nginx: [error] invalid PID number "" in "/usr/local/nginx/logs/nginx.pid"
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  120s;# 设置一个长连接最多可以服务多少个请求,超过自动关闭keepalive_requests 100;#gzip  on;server {listen       80;server_name  127.0.0.1;location / {root   /www/wwwroot/test/front/dist; # vue打包的文件普遍是dist文件,此文件夹与conf文件夹同一级别index  index.html index.htm;# 需要指向下面的@router否则会出现vue的路由在nginx中刷新出现404try_files $uri $uri/ @router;}# 对应上面的@router,主要原因是路由的路径资源并不是一个真实的路径,所以无法找到具体的文件# 因此需要rewrite到index.html中,然后交给路由在处理请求资源location @router {rewrite ^.*$ /index.html last;}# 记录访问日志access_log  /opt/jeecg-boot/log/nginx/front.log;# 记录服务器错误信息error_log  /opt/jeecg-boot/log/nginx/front.error.log;}
}

修改后保存退出,重启

在这里插入图片描述

应该就可以访问项目了

在这里插入图片描述

二、配置SSL证书

1、正常配置

以 ssl 开头或者包含443的配置就是跟SSL证书有关的,将公钥和私钥地址修改为自己的,其他保持不变,这是我的server模块:

server {listen 80;server_name test.com;# SSL证书相关,配合下面的ssl_certificate、ssl_certificate_key一起使用listen 443 ssl http2;# SSL-START SSL相关配置,请勿删除或修改下一行带注释的404规则# error_page 404/404.html;# HTTP_TO_HTTPS_STARTif ($server_port !~ 443){rewrite ^(/.*)$ https://$host$1 permanent;}# SSL公钥ssl_certificate    /www/wwwroot/ssl/test.com/certificate.pem;# SSL私钥ssl_certificate_key    /www/wwwroot/ssl/test.com/privkey.key;ssl_protocols TLSv1.1 TLSv1.2 TLSv1.3;ssl_ciphers EECDH+CHACHA20:EECDH+CHACHA20-draft:EECDH+AES128:RSA+AES128:EECDH+AES256:RSA+AES256:EECDH+3DES:RSA+3DES:!MD5;ssl_prefer_server_ciphers on;ssl_session_cache shared:SSL:10m;ssl_session_timeout 10m;add_header Strict-Transport-Security "max-age=31536000";error_page 497  https://$host$request_uri;# 一键申请SSL证书验证目录相关设置location ~ \.well-known{allow all;}location ~ .*\.(js|css)?${expires      12h;error_log /dev/null;access_log /dev/null;}# 图片路径根目录location / {alias /opt/jeecg-boot/upload/;# root /opt/jeecg-boot/upload;autoindex on;}access_log  /opt/temp/output.log;error_log  /opt/temp/output.error.log;
}

然后重启nginx就可以用 https 访问了。

2、配置报错

如果配置的过程中报错了怎么办?

证书是也是在有效期内的,确定没有问题

在这里插入图片描述

证书路径也正确,可重启的时候报错:

Starting nginx: nginx: [emerg] unknown directive “ssl_certificate” in /etc/nginx/nginx.conf:213

在这里插入图片描述

百度了一下说是没有安装SSL模块。

先到到nginx的根目录

在这里插入图片描述

执行如下命令:

./configure --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module

注意:

–prefix中的值是初次安装好nginx操作命令的目录,不是根目录的路径!!!

在这里插入图片描述
如果用到了http2,则使用如下命令:

./configure --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module --with-http_v2_module

在这里插入图片描述

然后再执行make命令

make

在这里插入图片描述

不需要再执行make install命令,备份一下原来的nginx命令文件

mv /usr/local/nginx/sbin/nginx /usr/local/nginx/sbin/nginx_bk

在这里插入图片描述

然后将重新生成的nginx命令文件复制到 /usr/local/nginx/sbin/ 目录,重新生成的nginx命令文件在 objs 目录下

cp /software/nginx-1.22.1/objs/nginx /usr/local/nginx/sbin/nginx

在这里插入图片描述

然后再次重启nginx

systemctl restart nginx

在这里插入图片描述

参考这个老哥的博客以及这个老哥的博客。

三、配置域名反向代理

案例中的域名配置了SSL证书,以“ssl”开头或者包含“443”的就是SSL证书的相关配置,可以根据自己情况移除。

1、简单代理

假如有一个域名 https://test.com ,现在要跳转到域名 https://replace.com ,可以在 nginx.conf 中添加如下配置:

server {listen 80;server_name test.com;# SSL证书相关,配合下面的ssl_certificate、ssl_certificate_key一起使用listen 443 ssl http2;# SSL-START SSL相关配置,请勿删除或修改下一行带注释的404规则# error_page 404/404.html;# HTTP_TO_HTTPS_STARTif ($server_port !~ 443){rewrite ^(/.*)$ https://$host$1 permanent;}# SSL公钥ssl_certificate    /www/wwwroot/ssl/test.com/certificate.pem;# SSL私钥ssl_certificate_key    /www/wwwroot/ssl/test.com/privkey.key;ssl_protocols TLSv1.1 TLSv1.2 TLSv1.3;ssl_ciphers EECDH+CHACHA20:EECDH+CHACHA20-draft:EECDH+AES128:RSA+AES128:EECDH+AES256:RSA+AES256:EECDH+3DES:RSA+3DES:!MD5;ssl_prefer_server_ciphers on;ssl_session_cache shared:SSL:10m;ssl_session_timeout 10m;add_header Strict-Transport-Security "max-age=31536000";error_page 497  https://$host$request_uri;# 一键申请SSL证书验证目录相关设置location ~ \.well-known{allow all;}location / {proxy_set_header Host $host;proxy_set_header X-Forwarded-Proto $http_x_forwarded_proto;proxy_set_header X-Request-Id $request_id;proxy_pass https://replace.com;client_max_body_size 40m;client_body_buffer_size 40m;}access_log  /opt/temp/output.log;error_log  /opt/temp/output.error.log;
}

2、带参数代理

现在域名为 https://test.com?random=fqCWze ,要跳转到域名 https://replace.com?random=fqCWze ,可以在 nginx.conf 中添加如下配置:

# 将请求地址(即?后面的参数)后面的参数带上
proxy_set_header X-original-URI $request_id;
proxy_set_header X-original-Args args;

完整的配置如下:

server {listen 80;server_name test.com;# SSL证书相关,配合下面的ssl_certificate、ssl_certificate_key一起使用listen 443 ssl http2;# SSL-START SSL相关配置,请勿删除或修改下一行带注释的404规则# error_page 404/404.html;# HTTP_TO_HTTPS_STARTif ($server_port !~ 443){rewrite ^(/.*)$ https://$host$1 permanent;}# SSL公钥ssl_certificate    /www/wwwroot/ssl/test.com/certificate.pem;# SSL私钥ssl_certificate_key    /www/wwwroot/ssl/test.com/privkey.key;ssl_protocols TLSv1.1 TLSv1.2 TLSv1.3;ssl_ciphers EECDH+CHACHA20:EECDH+CHACHA20-draft:EECDH+AES128:RSA+AES128:EECDH+AES256:RSA+AES256:EECDH+3DES:RSA+3DES:!MD5;ssl_prefer_server_ciphers on;ssl_session_cache shared:SSL:10m;ssl_session_timeout 10m;add_header Strict-Transport-Security "max-age=31536000";error_page 497  https://$host$request_uri;# 一键申请SSL证书验证目录相关设置location ~ \.well-known{allow all;}location / {proxy_set_header Host $host;proxy_set_header X-Forwarded-Proto $http_x_forwarded_proto;proxy_set_header X-Request-Id $request_id;proxy_pass https://replace.com;client_max_body_size 40m;client_body_buffer_size 40m;# 将请求地址(即?后面的参数)后面的参数带上proxy_set_header X-original-URI $request_id;proxy_set_header X-original-Args args;}access_log  /opt/temp/output.log;error_log  /opt/temp/output.error.log;
}

3、指定后缀域名跳转

现在域名为 https://test.com ,要在域名包含 /jump 时跳转,即域名为 https://test.com/jump 时要跳转到域名 https://replace.com ,可以在 nginx.conf 中添加如下配置:

location /jump/ {proxy_set_header Host $host;proxy_set_header X-Forwarded-Proto $http_x_forwarded_proto;proxy_set_header X-Request-Id $request_id;proxy_pass https://replace.com;client_max_body_size 40m;client_body_buffer_size 40m;
}

注意 location 的 jump 后面要添加 “/”,完整的配置如下:

server {listen 80;server_name test.com;# SSL证书相关,配合下面的ssl_certificate、ssl_certificate_key一起使用listen 443 ssl http2;# SSL-START SSL相关配置,请勿删除或修改下一行带注释的404规则# error_page 404/404.html;# HTTP_TO_HTTPS_STARTif ($server_port !~ 443){rewrite ^(/.*)$ https://$host$1 permanent;}# SSL公钥ssl_certificate    /www/wwwroot/ssl/test.com/certificate.pem;# SSL私钥ssl_certificate_key    /www/wwwroot/ssl/test.com/privkey.key;ssl_protocols TLSv1.1 TLSv1.2 TLSv1.3;ssl_ciphers EECDH+CHACHA20:EECDH+CHACHA20-draft:EECDH+AES128:RSA+AES128:EECDH+AES256:RSA+AES256:EECDH+3DES:RSA+3DES:!MD5;ssl_prefer_server_ciphers on;ssl_session_cache shared:SSL:10m;ssl_session_timeout 10m;add_header Strict-Transport-Security "max-age=31536000";error_page 497  https://$host$request_uri;# 一键申请SSL证书验证目录相关设置location ~ \.well-known{allow all;}location / {proxy_set_header Host $host;proxy_set_header X-Forwarded-Proto $http_x_forwarded_proto;proxy_set_header X-Request-Id $request_id;proxy_pass http://127.0.0.1:8080;client_max_body_size 40m;client_body_buffer_size 40m;# 将请求地址(即?后面的参数)后面的参数带上proxy_set_header X-original-URI $request_id;proxy_set_header X-original-Args args;}location /jump/ {proxy_set_header Host $host;proxy_set_header X-Forwarded-Proto $http_x_forwarded_proto;proxy_set_header X-Request-Id $request_id;proxy_pass https://replace.com;client_max_body_size 40m;client_body_buffer_size 40m;}access_log  /opt/temp/output.log;error_log  /opt/temp/output.error.log;
}

注意这样只会让域名为 https://test.com/jump 时跳转到 https://replace.com ,但如果跳转时需要保留 /jump 后缀,即 https://test.com/jump 时跳转到 https://replace.com/jump ,这时怎么办?只要去掉 location 中 jump 后的“/”,配置如下:

location /jump {proxy_set_header Host $host;proxy_set_header X-Forwarded-Proto $http_x_forwarded_proto;proxy_set_header X-Request-Id $request_id;proxy_pass https://replace.com;client_max_body_size 40m;client_body_buffer_size 40m;
}

完整配置如下:

server {listen 80;server_name test.com;# SSL证书相关,配合下面的ssl_certificate、ssl_certificate_key一起使用listen 443 ssl http2;# SSL-START SSL相关配置,请勿删除或修改下一行带注释的404规则# error_page 404/404.html;# HTTP_TO_HTTPS_STARTif ($server_port !~ 443){rewrite ^(/.*)$ https://$host$1 permanent;}# SSL公钥ssl_certificate    /www/wwwroot/ssl/test.com/certificate.pem;# SSL私钥ssl_certificate_key    /www/wwwroot/ssl/test.com/privkey.key;ssl_protocols TLSv1.1 TLSv1.2 TLSv1.3;ssl_ciphers EECDH+CHACHA20:EECDH+CHACHA20-draft:EECDH+AES128:RSA+AES128:EECDH+AES256:RSA+AES256:EECDH+3DES:RSA+3DES:!MD5;ssl_prefer_server_ciphers on;ssl_session_cache shared:SSL:10m;ssl_session_timeout 10m;add_header Strict-Transport-Security "max-age=31536000";error_page 497  https://$host$request_uri;# 一键申请SSL证书验证目录相关设置location ~ \.well-known{allow all;}location / {proxy_set_header Host $host;proxy_set_header X-Forwarded-Proto $http_x_forwarded_proto;proxy_set_header X-Request-Id $request_id;proxy_pass http://127.0.0.1:8080;client_max_body_size 40m;client_body_buffer_size 40m;# 将请求地址(即?后面的参数)后面的参数带上proxy_set_header X-original-URI $request_id;proxy_set_header X-original-Args args;}location /jump {proxy_set_header Host $host;proxy_set_header X-Forwarded-Proto $http_x_forwarded_proto;proxy_set_header X-Request-Id $request_id;proxy_pass https://replace.com;client_max_body_size 40m;client_body_buffer_size 40m;}access_log  /opt/temp/output.log;error_log  /opt/temp/output.error.log;
}

如果要在跳转后携带“?”后的参数,即让域名 https://test.com/jump?random=fqCWze ,跳转到域名 https://replace.com/jump?random=fqCWze ,同样加上如下配置:

# 将请求地址(即?后面的参数)后面的参数带上
proxy_set_header X-original-URI $request_id;
proxy_set_header X-original-Args args;
server {listen 80;server_name test.com;# SSL证书相关,配合下面的ssl_certificate、ssl_certificate_key一起使用listen 443 ssl http2;# SSL-START SSL相关配置,请勿删除或修改下一行带注释的404规则# error_page 404/404.html;# HTTP_TO_HTTPS_STARTif ($server_port !~ 443){rewrite ^(/.*)$ https://$host$1 permanent;}# SSL公钥ssl_certificate    /www/wwwroot/ssl/test.com/certificate.pem;# SSL私钥ssl_certificate_key    /www/wwwroot/ssl/test.com/privkey.key;ssl_protocols TLSv1.1 TLSv1.2 TLSv1.3;ssl_ciphers EECDH+CHACHA20:EECDH+CHACHA20-draft:EECDH+AES128:RSA+AES128:EECDH+AES256:RSA+AES256:EECDH+3DES:RSA+3DES:!MD5;ssl_prefer_server_ciphers on;ssl_session_cache shared:SSL:10m;ssl_session_timeout 10m;add_header Strict-Transport-Security "max-age=31536000";error_page 497  https://$host$request_uri;# 一键申请SSL证书验证目录相关设置location ~ \.well-known{allow all;}location / {proxy_set_header Host $host;proxy_set_header X-Forwarded-Proto $http_x_forwarded_proto;proxy_set_header X-Request-Id $request_id;proxy_pass http://127.0.0.1:8080;client_max_body_size 40m;client_body_buffer_size 40m;# 将请求地址(即?后面的参数)后面的参数带上proxy_set_header X-original-URI $request_id;proxy_set_header X-original-Args args;}location /jump {proxy_set_header Host $host;proxy_set_header X-Forwarded-Proto $http_x_forwarded_proto;proxy_set_header X-Request-Id $request_id;proxy_pass https://replace.com;client_max_body_size 40m;client_body_buffer_size 40m;# 将请求地址(即?后面的参数)后面的参数带上proxy_set_header X-original-URI $request_id;proxy_set_header X-original-Args args;}access_log  /opt/temp/output.log;error_log  /opt/temp/output.error.log;
}

4、访问反向代理域名的静态资源

前面已经说了如何让域名 https://test.com 跳转到域名 https://replace.com ,但是跳转后发现访问域名 https://replace.com 的“css”、“js”以及图片等静态资源报错 404 ,这是因为没有对静态资源进行放行。

这里需要具体域名具体分析,比如我访问域名 https://replace.com 的静态资源路径包含 /H5Web 以及 /APPServer 时,即请求路径为

https://replace.com/H5Web/static/js/chunk-3a029b88.7ce87ec5.js
或者
https://replace.com/APPServer/static/css/chunk-0067e1b7.34739385.css

可以添加如下配置:

# 解决静态资源无法访问的问题,即放行“proxy_pass”中的域名的静态资源
location ~* \/(H5Web|APPServer) {proxy_pass https://replace.com;proxy_set_header Host $http_host;proxy_set_header X-Real-IP $remote_addr;proxy_set_header X-Forw $proxy_add_x_forwarded_for;
}

解释:

~*:不区分大小写的匹配。
\:将后面接着的字符标记为一个特殊字符或一个原义字符或一个向后引用。比如这里 / 匹配一个路径分隔符 / 。
():表达式的开始和结束位置。这里 (H5Web|APPServer) 匹配 H5Web 或者 APPServer 。

完整配置如下:

server {listen 80;server_name test.com;# SSL证书相关,配合下面的ssl_certificate、ssl_certificate_key一起使用listen 443 ssl http2;# SSL-START SSL相关配置,请勿删除或修改下一行带注释的404规则# error_page 404/404.html;# HTTP_TO_HTTPS_STARTif ($server_port !~ 443){rewrite ^(/.*)$ https://$host$1 permanent;}# SSL公钥ssl_certificate    /www/wwwroot/ssl/test.com/certificate.pem;# SSL私钥ssl_certificate_key    /www/wwwroot/ssl/test.com/privkey.key;ssl_protocols TLSv1.1 TLSv1.2 TLSv1.3;ssl_ciphers EECDH+CHACHA20:EECDH+CHACHA20-draft:EECDH+AES128:RSA+AES128:EECDH+AES256:RSA+AES256:EECDH+3DES:RSA+3DES:!MD5;ssl_prefer_server_ciphers on;ssl_session_cache shared:SSL:10m;ssl_session_timeout 10m;add_header Strict-Transport-Security "max-age=31536000";error_page 497  https://$host$request_uri;# 一键申请SSL证书验证目录相关设置location ~ \.well-known{allow all;}location / {proxy_set_header Host $host;proxy_set_header X-Forwarded-Proto $http_x_forwarded_proto;proxy_set_header X-Request-Id $request_id;proxy_pass http://127.0.0.1:8080;client_max_body_size 40m;client_body_buffer_size 40m;# 将请求地址(即?后面的参数)后面的参数带上proxy_set_header X-original-URI $request_id;proxy_set_header X-original-Args args;}location /jump {proxy_set_header Host $host;proxy_set_header X-Forwarded-Proto $http_x_forwarded_proto;proxy_set_header X-Request-Id $request_id;proxy_pass https://replace.com;client_max_body_size 40m;client_body_buffer_size 40m;# 将请求地址(即?后面的参数)后面的参数带上proxy_set_header X-original-URI $request_id;proxy_set_header X-original-Args args;}# 解决静态资源无法访问的问题,即放行“proxy_pass”中的域名的静态资源location ~* \/(H5Web|APPServer) {proxy_pass https://replace.com;proxy_set_header Host $http_host;proxy_set_header X-Real-IP $remote_addr;proxy_set_header X-Forw $proxy_add_x_forwarded_for;}access_log  /opt/temp/output.log;error_log  /opt/temp/output.error.log;
}

5、配置静态资源访问

这里以小程序反向代理为例,服务器静态资源地址为 /www/wwwroot/ssl/test.com ,如果不是小程序反向代理,可以跳过(1)。

我的小程序访问后端的域名为 https://test.com ,现在有个需求,需要在小程序中跳转到域名 https://replace.com ,但闹心的是,在浏览器可以直接跳转的域名 https://replace.com ,在小程序跳转就会报无法访问的错。

可以在小程序后台加入域名获得一个TXT文件,配置到服务器上,再通过域名反向代理解决,即通过域名 https://test.com 跳转到 https://replace.com ,详情看上面,这里讲配置访问TXT文件。

(1)、将域名配置到小程序,获得TXT文件(非小程序反向代理可以不看)

登录微信小程序后台,在左侧菜单找到开发,下拉找到业务域名,点击开始配置按钮

在这里插入图片描述

然后填入域名,我这里域名为 https://test.com

在这里插入图片描述

下载TXT文件,点击保存按钮。校验成功后,填入的域名就会显示在业务域名中了,这就表示业务域名配置成功了

在这里插入图片描述

然后将TXT文件放到服务器目录,我的服务器目录是 /www/wwwroot/ssl/test.com

(2)、配置访问静态资源

这里已经将静态资源放到了服务器的 /www/wwwroot/ssl/test.com ,我在这个目录下放了如下文件

JgHECTkvkn.txt
img1.png

然后加入如下配置:

location ~* \.(txt|html|jpg|png)$ {root /www/wwwroot/ssl/test.com;
}

重启,访问 JgHECTkvkn.txt 文件,访问链接为

https://test.com/JgHECTkvkn.txt

在这里插入图片描述

访问 img1.png 文件链接为

https://test.com/img1.png

在这里插入图片描述

如果要在 /www/wwwroot/ssl/test.com 目录下新建子目录,再访问子目录的静态资源怎么办?

这时访问路径为

域名 + 子目录名称 + 静态资源名称.后缀

比如我在 /www/wwwroot/ssl/test.com 目录下新建了一个名为 images 的目录,在这个目录放入 img2.png 文件,访问链接为

https://test.com/images/img2.png

在这里插入图片描述

到这里应该结束了,但是有些后端接口可能以 .html 结尾,这时访问就会到 /www/wwwroot/ssl/test.com 目录下寻找,结果自然就是404了。

这时需要排除这个接口,这里以 cfcahandwriteUI.html 接口为例

在这里插入图片描述

修改配置

location ~* \/(?!cfcahandwriteUI).(txt|html|jpg|png)$ {root /www/wwwroot/ssl/test.com;
}

重启,再次访问

在这里插入图片描述

成功排除!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/198181.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

leetcode:对称二叉树

题目描述 题目链接:101. 对称二叉树 - 力扣(LeetCode) 题目分析 题目中说至少存在一个节点,所以我们只需要对比左右子树 写一个子函数对比左右子树:用递归的思路,左子树的左子树和右子树的右子树对比&…

2024 年甘肃省职业院校技能大赛中职组 电子与信息类“网络安全”赛项竞赛样题-B

2024 年甘肃省职业院校技能大赛中职组 电子与信息类“网络安全”赛项竞赛样题-B 目录 2024 年甘肃省职业院校技能大赛中职组 电子与信息类“网络安全”赛项竞赛样题-B 需要环境或者解析可以私信 (二)A 模块基础设施设置/安全加固(200 分&…

使用Python Flask搭建Web问答应用程序并发布到公网远程访问

使用Python Flask搭建web问答应用程序框架,并发布到公网上访问 文章目录 使用Python Flask搭建web问答应用程序框架,并发布到公网上访问前言1. 安装部署Flask并制作SayHello问答界面2. 安装Cpolar内网穿透3. 配置Flask的问答界面公网访问地址4. 公网远程…

打开游戏提示缺少(或找不到)XINPUT1_3.DLL怎么解决

在电脑使用过程中,我们可能会遇到一些错误提示,其中之一就是xinput1_3.dll丢失。那么,xinput1_3.dll是什么文件?它对电脑有什么影响?本文将详细介绍xinput1_3.dll丢失的原因以及五个详细的解决方法,帮助大家…

帮企多城市分站系统源码+关键词排名优化推广 附带完整的搭建教程

随着市场竞争的加剧,企业对于网络营销的需求越来越多元化。传统的单一网站已经无法满足企业在网络营销方面的需求,因此我们需要开发一套多城市分站系统,以满足企业在不同地区、不同行业的需求。同时,我们还结合了关键词排名优化推…

外包干了2个月,技术明显退步了...

先说一下自己的情况,大专生,19年通过校招进入广州某软件公司,干了接近5年的功能测试,今年11月份,感觉自己不能够在这样下去了,长时间呆在一个舒适的环境会让一个人堕落!而我已经在一个企业干了四年的功能测…

UE4 双屏分辨率设置

背景: 做了一个UI 应用,需要在双屏上进行显示。 分辨率如下:3840*1080; 各种折腾,其实很简单: 主要是在全屏模式的时候 一开始没有选对,双屏总是不稳定。 全屏模式改成:Windows 之…

JS加密/解密之HOOK实战

之前的章节有介绍过Javascript的Hook相关的基础知识,相信大部分人也知道了什么是Hook,今天我们来讲一下Hook实战,实际的运用。 0x1.事上练 // 程序员们基本都喜欢简单精辟 直入主题 不喜欢咬文嚼字 我们先直接上代码 var _log console.log…

23、什么是卷积的 Feature Map?

这一节介绍一个概念,什么是卷积的 Feature Map? Feature Map, 中文称为特征图,卷积的 Feature Map 指的是在卷积神经网络(CNN)中,通过卷积这一操作从输入图像中提取的特征图。 上一节用示意动图介绍了卷积算…

web自动化 -- pyppeteer

由于Selenium流行已久,现在稍微有点反爬的网站都会对selenium和webdriver进行识别,网站只需要在前端js添加一下判断脚本,很容易就可以判断出是真人访问还是webdriver。虽然也可以通过中间代理的方式进行js注入屏蔽webdriver检测,但…

MySQL笔记-第04章_运算符

视频链接:【MySQL数据库入门到大牛,mysql安装到优化,百科全书级,全网天花板】 文章目录 第04章_运算符1. 算术运算符2. 比较运算符3. 逻辑运算符4. 位运算符5. 运算符的优先级拓展:使用正则表达式查询 第04章_运算符 …

​ 海外服务器创新高地:亚马逊云科技树立云计算韧性标杆

云计算的大潮中,众多企业对云服务器的需求与日俱增。但随之而来的就是云服务器的运行对于企业的业务的重要性也越来越高。想象一下,如果在全球范围内运行的服务和应用程序遭遇意外中断,从而产生的重大影响可能会给一些企业带来严重损失。因此…

如何将整个文件内容加载到富文本控件?

众所周知,富文本控件,Rich Text Control,用来呈现文本内容的一个控件,功能上相对记事本来说更加丰富,但又不及 Word。 但,我们的目标又不是开发另外一个 Word。 我们可以使用 EM_STREAMIN 消息将整个文件…

ubuntu安装tomcat并配置前端项目

1.1查找 # 先更新 sudo apt update # 查找 apt search jdk1.2安装 sudo apt install openjdk-8-jdk1.3验证 java -version 2.安装tomcat 下载链接:Apache Tomcat - Apache Tomcat 8 Software Downloadshttps://tomcat.apache.org/download-80.cgi下载这个&…

vue+electron问题汇总

1. Vue_Bug Failed to fetch extension, trying 4 more times 描述:项目启动时报错 解决:注释图片中内容 2. Module not found: Error: Can’t resolve ‘fs’ in 描述:项目启动报错 解决:vue.config.js中添加图中数据 3.导入…

基于Java SSM框架实现汽车在线销售系统项目【项目源码+论文说明】计算机毕业设计

基于java的SSM框架实现汽车在线销售系统演示 摘要 21世纪的今天,随着社会的不断发展与进步,人们对于信息科学化的认识,已由低层次向高层次发展,由原来的感性认识向理性认识提高,管理工作的重要性已逐渐被人们所认识&a…

Leetcode每日一题学习训练——Python3版(从二叉搜索树到更大和树)

版本说明 当前版本号[20231204]。 版本修改说明20231204初版 目录 文章目录 版本说明目录从二叉搜索树到更大和树理解题目代码思路参考代码 原题可以点击此 1038. 从二叉搜索树到更大和树 前去练习。 从二叉搜索树到更大和树 给定一个二叉搜索树 root (BST),请…

〖大前端 - 基础入门三大核心之JS篇㊸〗- DOM事件对象的方法

说明:该文属于 大前端全栈架构白宝书专栏,目前阶段免费,如需要项目实战或者是体系化资源,文末名片加V!作者:不渴望力量的哈士奇(哈哥),十余年工作经验, 从事过全栈研发、产品经理等工作&#xf…

高铁乘务员简历12篇

想要在高铁乘务员职位的求职中脱颖而出,顺利进入心仪的高铁乘务员岗位,以下是12篇专业的高铁乘务员个人简历案例,无论您是初入行业的新手还是有一定工作经验的乘务员参考这些简历,让您的求职之路更加顺畅。 高铁乘务员简历模板下…

3D Gaussian Splatting的使用

3D Gaussian Splatting的使用 1 下载与安装2 准备场景样本2.1 准备场景照片2.1.1 采集图片2.1.2 生成相机位姿 3 训练4 展示 1 下载与安装 今年SIGGRAPH最佳论文,学习了一下,果然厉害,具体论文原理就不说了,一搜都有,…