From 61d7221b253affd5ec15a260fd9b61d57a535a47 Mon Sep 17 00:00:00 2001 From: "Mohammad J. Zamani" Date: Tue, 3 Dec 2024 10:16:06 +0100 Subject: [PATCH] fix: added changes requested (#179) --- ...sing-obs-through-an-nginx-reverse-proxy.md | 119 ++++++++++++++++-- .../policy-visual-editor.png | Bin 0 -> 38828 bytes 2 files changed, 107 insertions(+), 12 deletions(-) create mode 100644 static/img/docs/best-practices/storage/object-storage-service/policy-visual-editor.png diff --git a/docs/best-practices/storage/object-storage-service/accessing-obs-through-an-nginx-reverse-proxy.md b/docs/best-practices/storage/object-storage-service/accessing-obs-through-an-nginx-reverse-proxy.md index 4e9e5ab55..d6941c790 100644 --- a/docs/best-practices/storage/object-storage-service/accessing-obs-through-an-nginx-reverse-proxy.md +++ b/docs/best-practices/storage/object-storage-service/accessing-obs-through-an-nginx-reverse-proxy.md @@ -6,8 +6,8 @@ tags: [storage, obs, reverse-proxy, nginx] # Accessing OBS Through an NGINX Reverse Proxy -Generally, you can access OBS using a bucket's access domain name [for -example](https://**bucketname**.obs.eu-de.otc.t-systems.com) +Generally, you can access OBS using a bucket's access domain name (for +example, **https://`bucketname`.obs.eu-de.otc.t-systems.com**) provided by OBS or using a user-defined domain name bound to an OBS bucket. @@ -34,11 +34,7 @@ actual domain name or IP address of OBS is hidden. proxy](/img/docs/best-practices/storage/object-storage-service/en-us_image_0273872842.png) ## Prerequisites - -- You have known the region and access domain name of the bucket. For - example, the access domain name of a bucket in the eu-de region is - `nginx-obs.obs.eu-de.otc.t-systems.com`. To obtain the - information, see [Querying Basic Information of a +- You know the region and access domain name of the bucket. For example, the access domain name of a bucket named `nginx-obs` in the **eu-de** region is `nginx-obs.obs.eu-de.otc.t-systems.com`. To obtain the information, see [Querying Basic Information of a Bucket](https://docs.otc.t-systems.com/object-storage-service/umn/obs_browser_operation_guide/managing_buckets/viewing_basic_information_of_a_bucket.html). - You have a Linux ECS **in the same region**. CentOS is used here as an example. For details, see [Creating an @@ -110,9 +106,12 @@ b. Press the *i* key to go to the edit mode and modify the | Parameter | Description | | --------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | server_name | IP address that provides the reverse proxy service. It is the fixed IP address that is exposed to end users for access. Enter the EIP of the ECS where the NGINX reverse proxy service is deployed. | - | proxy_pass | IP address of the proxied server. Enter the OBS bucket access domain name required in [Prerequisites](#prerequisites). The domain name must start with http:// or https://.

Example: [https://nginx-obs.obs.eu-de.otc.t-systems.com](https://nginx-obs.obs.eu-de.otc.t-systems.com) **Note**: When you use an API, SDK, or obsutil for calling, set this parameter to the region domain name. The following is an example: `obs.eu-de.otc.t-systems.com` | - | proxy_buffering | Whether to enable the proxy buffer. The value can be `on` or `off`. If this parameter is set to on, Nginx stores the response returned by the backend in a buffer and then sends the data to the client. If this parameter is set to off, Nginx sends the response to the client as soon as it receives the data from the backend. Default value: `on`

Example: `proxy_buffering off` | + | proxy_pass | IP address of the proxied server. Enter the OBS bucket access domain name required in [Prerequisites](#prerequisites). The domain name must start with http:// or https://.

Example: [https://nginx-obs.obs.eu-de.otc.t-systems.com](https://nginx-obs.obs.eu-de.otc.t-systems.com)| + | proxy_buffering | Whether to enable the proxy buffer. The value can be `on` or `off`. If this parameter is set to on, Nginx stores the response returned by the backend in a buffer and then sends the data to the client. If this parameter is set to off, Nginx sends the response to the client as soon as it receives the data from the backend. Default value: `on`

Example: `proxy_buffering off` | +:::note +When you use an API, SDK, or obsutil for calling, set **proxy_pass** to the region domain name. The following is an example: `obs.eu-de.otc.t-systems.com`. +::: c. Press the *ESC* key and enter *:wq* to save the configuration and exit. @@ -157,11 +156,107 @@ c. In the navigation pane, choose *Permissions* -> *Bucket d. Click *Create*. -e. Choose a policy configuration method you like. *Visual Editor* - is used here. +e. Choose a policy configuration method you like. *Visual Editor* is used here. + +![*Figure 3* ](/img/docs/best-practices/storage/object-storage-service/policy-visual-editor.png) f. Configure the following parameters. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ Table 2 + Bucket policy parameters +
ParameterDescription
Policy NameEnter a policy name.
Policy contentEffectSelect Allow.
Principal +
    +
  • To select All accounts enter *.
  • +
+
Resources +
    +
  • + Method 1: +
      +
    • Select Entire bucket (including the objects in it).
    • +
    +
  • +
  • + Method 2: +
      +
    • Select Current bucket and Specified objects.
    • +
    • Set the resource path to * to indicate all objects in the bucket.
    • +
    +
  • +
+
Actions +
    +
  • Choose Customize.
  • +
  • Select Get* and List*.
  • +
+
Conditions (Optional) +
    +
  • Key: Select SourceIp.
  • +
  • Condition Operator: Select IpAddress
  • +
  • + Value: +
      +
    • +

      If the ECS uses a public DNS, the value is as follows:

      +

      Elastic IP address of the ECS

      +
    • +
    • +

      If the ECS uses a Open Telekom Cloud private DNS, the value is as follows:

      +

      100.64.0.0/10,214.0.0.0/7,Private IP address of the ECS

      +
    • +
    +
  • +
+
+ + +:::note +In conditions you can click **Add** to configure IP addresses (CIDR blocks). +IP addresses in the range starting with **100** or **214** are for ECSs to access OBS through an internal network. +::: + g. Click *Create*. ## Verifying the reverse proxy configuration @@ -172,5 +267,5 @@ configuration is successful. For example, visit `http://**ECS EIP**/otc.jpg`. -![*Figure 3* Using a fixed IP address to access OBS +![*Figure 4* Using a fixed IP address to access OBS resources](/img/docs/best-practices/storage/object-storage-service/en-us_image_0273876194.png) \ No newline at end of file diff --git a/static/img/docs/best-practices/storage/object-storage-service/policy-visual-editor.png b/static/img/docs/best-practices/storage/object-storage-service/policy-visual-editor.png new file mode 100644 index 0000000000000000000000000000000000000000..2cbd28be32b272ba13fa3710a17d52d46079ffb5 GIT binary patch literal 38828 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 literal 0 HcmV?d00001