小编Jan*_*mer的帖子

配置 nginx 以与 Tomcat 和 SSL 一起使用

我在谷歌上搜索并查看了各种示例 SSL 配置,看起来我已经设置好了,但是有两个问题:

  1. 当我加载https://mysite.com 时,应该出现在浏览器窗口右上角的锁没有出现。
  2. 幕后的 Java 应用程序使用 httpUtil.GetRequestURL() 来获取当前请求,它是http://mysite.com

我尝试将主机标头设置为 $host 而不是 $http_host,并且我尝试设置 proxy_redirect 以将 URL 设置为 https,但都没有任何效果。

我的 SSL 配置如下。有人可以告诉我我做错了什么吗?

server {
    listen       443;
    server_name  dev.mysite.com;

    access_log  /var/log/nginx/dev_mysite_access.log;
    error_log  /var/log/nginx/dev_mysite_error.log;

    ssl on;
    ssl_certificate /export/nginx/certs/mysite.com.crt;
    ssl_certificate_key /export/nginx/certs/mysite.com.key;

    location / {
        # give site more time to respond
        proxy_read_timeout 120;

        # needed to forward user's IP address
        proxy_set_header  X-Real-IP  $remote_addr;

        # needed for HTTPS
        proxy_set_header  X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header Host $http_host;
        proxy_redirect off;
        proxy_max_temp_file_size 0;

        proxy_pass http://localhost:8081; …
Run Code Online (Sandbox Code Playgroud)

ssl tomcat nginx

6
推荐指数
2
解决办法
2万
查看次数

使用 Nginx 代理到 Apache,真实主机名丢失

我遇到了多个网站共享一个 IP 地址的情况。我让 nginx 接受请求并将它们传递给实际上为站点提供服务的 Apache。我知道这里并不真正需要 Apache,但由于历史原因,它是这样设置的,如果不需要,我宁愿不更改它。

事情的设置方式,nginx 接受对 example.com 的请求并将其传递给 Apache,如下所示:

server {
    listen       80;
    server_name example.com www.example.com;

    access_log  /var/log/nginx/example.log;
    error_log  /var/log/nginx/example.log;

    location / {
        proxy_read_timeout 120;
        proxy_set_header  X-Real-IP  $remote_addr;
        proxy_pass http://localhost:8100;
    }
}
Run Code Online (Sandbox Code Playgroud)

在 httpd.conf 中,我们有

<VirtualHost localhost:8100>
    ServerName www.example.com
    ServerAlias example.com
    Options Indexes
    DocumentRoot /export/sites/example/live
    ServerAdmin info@example.net
</VirtualHost>
Run Code Online (Sandbox Code Playgroud)

到目前为止,一切都运行良好,但我已经向站点添加了一个 PHP 脚本(不是我自己的),但它无法获得正确的主机名。$_SERVER["HTTP_HOST"] 和/或 $_SERVER['SERVER_NAME'] 正在返回 localhost:8100 而不是 example.com。

是否可以进行设置以便 PHP 获得正确的主机名?

nginx hostname apache-2.2

3
推荐指数
1
解决办法
2146
查看次数

标签 统计

nginx ×2

apache-2.2 ×1

hostname ×1

ssl ×1

tomcat ×1